Partial mapping in Entity Framework 4

Posted by Dimi Toulakis on Stack Overflow See other posts from Stack Overflow or by Dimi Toulakis
Published on 2010-04-20T12:44:52Z Indexed on 2010/04/20 13:03 UTC
Read the original article Hit count: 500

Filed under:
|
|

Hi guys,

I want to be able to do the following:

I have a model and inside there I do have an entity.

This entity has the following structure:

public class Client
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}   

What I want now, is to just get the client name based on the id. Therefore I wrote a stored procedure which is doing this.

CREATE PROCEDURE [Client].[GetBasics]
@Id INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;


SELECT 
    Name
FROM Client.Client
INNER JOIN Client.Validity ON ClientId = Client.Id
WHERE
    Client.Id = @Id; 
 END

Now, going back to VS, I do update the model from the database with the stored procedure included.

Next step is to map this stored procedure to the client entity as a function import.

This also works fine.

Trying now to load one client's name results into an error during runtime...

"The data reader is incompatible with the specified 'CSTestModel.Client'. A member of the type, 'Id', does not have a corresponding column in the data reader with the same name."

I am OK with the message. I know how to fix this (returning as resultset Id, Name, Description).

My idea behind this question is the following:

I just want to load parts of the entity, not the complete entity itself.

Is there a solution to my problem (except creating complex types)? And if yes, can someone point me to the right direction?

Many thanks,

Dimi

© Stack Overflow or respective owner

Related posts about entity-framework-4

Related posts about c#