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

发布于 2024-11-04 17:42:14 字数 196 浏览 0 评论 0原文

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

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

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

如何使用实体框架 4 来执行此操作?

I have a sql statement that I want to be able to convert into EF4.

Its a simple Left outer join that looks like

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

how do I do this using the entity framework 4?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦里梦着梦中梦 2024-11-11 17:42:14

如果您的模型中有映射的关系,您可以简单地使用导航属性,因为它们总是使用左连接:

var data = members.EntryDates; 

我希望您没有这样的关系,因为 CardId 看起来不像 的主键会员EntryDate

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

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

If there is relation mapped in your model you can simply use navigation properties because they always use left join:

var data = members.EntryDates; 

I expect you don't have such relation because CardId doesn't look like primary key of Member or EntryDate.

If you don't have navigation properties you must use

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
            };

This works only in EFv4+ because EFv1 didn't support DefaultIfEmpty.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文