Imagine I have this class
public class Case
{
[Key]
[DataMember]
public int CaseId { get; set; }
[DataMember]
public string Title { get; set; }
[DataMember]
public string PublicStatusName { get; set; }
}
Basically, I want to take the result set of something like this query
select c.Id, c.Title, sp.Name
from Case c
inner join StatusGrouping sg on sg.InternalStatusId = c.StatusId
inner join StatusPublic sp on sp.PublicStatusId = sg.PublicStatusId
where c.Id = 42
and put it into the class above.
I know I can make navigation properties and express foreign key relationships etc. in EF. So one (ugly) possiblity would be to just have a StatusGrouping property on the Case class. And then have a StatusPublic property on the StatusGrouping class, and then have EF hook up the hierarchy when I read my data.
But the StatusGrouping table is just a relation table that I don’t care about in this case. Also, I don’t care about the PublicStatusId, all I care about is that I want the right StatusPublic.Name mapped into my PublicStatusName in the Case class whenever I fetch a Case from the db.
Is the only way to do this in EF to make a view on the db and map to that?
You can use a Defining Query in the .edmx file. By this way you can map the query directly to your model class.
Please refer http://msdn.microsoft.com/en-us/library/cc982038.aspx for more information on Defining Query.