想象一下,我有这个课程
public class Case
{
[Key]
[DataMember]
public int CaseId { get; set; }
[DataMember]
public string Title { get; set; }
[DataMember]
public string PublicStatusName { get; set; }
}
基本上,我想采用像这个查询
这样的结果集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
并把它放到上面的课程中。
我知道我可以在EF中制作导航属性并表达外键关系等。因此,一个(丑陋的)可能性就是在Case类上拥有一个StatusGrouping属性。然后在StatusGrouping类上有一个StatusPublic属性,然后在我读取数据时让EF挂钩层次结构。
但是StatusGrouping表只是一个我不关心的关系表。另外,我不关心PublicStatusId,我关心的是,每当我从数据库中获取一个Case时,我都希望将正确的StatusPublic.Name映射到Case类中的PublicStatusName。
这可能是基本的东西。在像iBATIS(现在的MyBatis)这样的东西上会很容易。我确信EF也很容易。
提前致谢!
答案 0 :(得分:1)
最简单的方法:在数据库中创建视图,将实体映射到视图
- 或 -
创建具有匿名类型的查询作为结果。
无论哪种方式,您都会获得一次性的只读结果。据我所知,这是你问题的唯一应用。