没有关联时选择相关实体

时间:2011-04-12 00:15:13

标签: entity-framework-4 linq-to-entities

EF4非常适合提取关联数据,但如果关联不明确,您会怎么做?一个例子说明了我的情况:

MasterTable有一个child1Id和child2Id列。

Child1和Child2有两个表,对应的主键为child1Id和child2Id。有Master,Child1和Child2实体。

Master和Child1 / Child2表或实体之间没有外键或实体框架关联。

当我拥有的是主人中匹配的子ID时,如何从两个子表中选择主记录和相应的子记录?

我不能改造关系或关联。

理查德

1 个答案:

答案 0 :(得分:0)

您必须通过linq到实体手动选择它们。以下是两个表之间的左连接:

var query = from m in context.Masters
            where m.Id == 1
            join c in context.Childs on m.Child.Id equals c.Id into leftJoin
            from x in leftJoin.DefaultIfEmpty()
            select new
                {
                    Id = x.Id,
                    Name = x.Name,
                    Child = x.Childs
                };

顺便说一下。如果您的实体具有包含来自其他实体的PK值的属性,则可以在EF designer中创建关系。在这种情况下,您将能够使用导航属性。