将左外连接查询转换为实体框架查询

时间:2011-04-30 03:32:57

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

我有一个sql语句,我希望能够转换为EF4。

它是一个简单的左外连接,看起来像

SELECT * 
FROM EntryDate 
LEFT OUTER JOIN Member on Member.CardId = EntryDate.CardID

我如何使用实体框架4?

1 个答案:

答案 0 :(得分:2)

如果您的模型中存在关系映射,则只需使用导航属性,因为它们始终使用左连接:

var data = members.EntryDates; 

我希望您没有这种关系,因为CardId看起来不像MemberEntryDate的主键。

如果您没有导航属性,则必须使用

var query = from m in context.Members
            join e in context.EntryDates on m.CardId equals e.CardId into x
            from res in x.DefaultIfEmpty()
            select new
            {
               Member = m,
               EntryDate = res
            };

这仅适用于EFv4 +,因为EFv1不支持DefaultIfEmpty