0

想象一下我有这门课

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,我只关心每当我从数据库中获取案例时,我希望将正确的 StatusPublic.Name 映射到 Case 类中的 PublicStatusName 中。

这可能是基本的东西。在 iBATIS(现在的 MyBatis)之类的东西中,这将非常容易。我相信在 EF 中也很容易。

提前致谢!

4

1 回答 1

1

最简单的方法:在数据库中创建视图,将实体映射到视图。
-- 或 --
创建具有匿名类型的查询作为结果。

无论哪种方式,您都将获得一次性只读结果。据我所知,这是您问题的唯一应用。

于 2012-08-02T13:28:22.617 回答