【发布时间】:2011-05-28 13:47:51
【问题描述】:
我在 EF Code First 中有一个用户类,其中包含很多属性,每个用户都有一个“联系人”集合,这些“联系人”是作为总用户群的子集的其他用户。另一个集合“ContactOfOthers”正好相反,显示谁将此用户作为联系人,因为这是多对多关系。
public class User {
[Key]
public string UserName { get; set; }
// Lots of other properties not relevant to this question...
[NotMapped]
public bool IsMyContact { get; set; }
public virtual ICollection<User> Contacts { get; set; }
public virtual ICollection<User> ContactOfOthers { get; set; }
}
我引入了一个名为 IsMyContact 的未映射(未映射到 DB)属性。这适用于用户查询一堆用户并且我需要在视图中显示哪些用户已经在他们的联系人列表中的情况。因此,如果用户是其“联系人”集合的一部分,则此属性应该为真。不应将其保存到数据库中,因为同一用户可能会有所不同,具体取决于执行查询的用户。
在上下文查询中是否有一种很好的方法可以做到这一点?它当然可以通过执行两个查询然后遍历主要查询来强制执行,寻找与用户联系人集合的匹配项,但我想知道是否有一种更优雅的方法可以从一个查询中执行此操作,投影运行-时间计算列到这个属性上?
【问题讨论】:
标签: asp.net-mvc linq entity-framework linq-to-entities