实体框架代码第一个用于有趣模式的外部联接

时间:2011-07-19 22:13:57

标签: database-design entity-framework-4.1 ef-code-first entity-relationship

所以我有一个我开发的模式,它有一个表作为多个实体的联结表。这是为了标记。我让我的实体使用GUID,然后我就能集中标记。

enter image description here

在图中的这种情况下,我通过ObjectTag联结表a'lad的ObjectGUID字段,通过TeamMemberGUID将TeamMember与多个设置相关联。我可以以同样的方式轻松地关联任何其他GUID键控实体。因此,我有一个可以“标记”各种实体的标签的中央回购。非常漂亮,或者我思考

问题是我似乎无法找到一种方法将这些数据带回LINQ to Entities。我正在使用EF Code First,如果可能的话,我想在一个查询中将其恢复。我得到的最接近的是使用丑陋的外连接语法:

var team = from tm in db.TeamMembers
join ot in db.ObjectTags on tm.TeamMemberGuid equals ot.ObjectGuid into objTags  // outer join to ObjectTag

from ot2 in objTags.DefaultIfEmpty()
join tags in db.Tags on ot2.TagId equals tags.TagId into tmTags  // join via ObjectTag to Tag

select new TeamMemberDTO
{
     TeamMember = tm,
     Tags = tmTags
};

但是这给了我一个扁平的集合(4个团队成员共享2个标签可以等于8个结果),我正在寻找的是一个具有相关标签的Tags属性的分层TeamMember对象。

我尝试过普通的关系属性,但EF不希望将多个实体映射到联结表,这样就可以了。我也曾经尝过一个小组,但还没有达到目的。

这是LINQ到EF吗?我需要考虑某种观点吗?

真的希望EF专业人士可以帮助我解决这个问题。我觉得我错过了一些东西或采取了错误的方法。

0 个答案:

没有答案