所以我有一个我开发的模式,它有一个表作为多个实体的联结表。这是为了标记。我让我的实体使用GUID,然后我就能集中标记。
在图中的这种情况下,我通过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专业人士可以帮助我解决这个问题。我觉得我错过了一些东西或采取了错误的方法。