c# - LINQ 表达式语法如何与 Include() 配合使用以进行预加载

标签 c# linq entity-framework linqpad

我在下面有一个查询,但我想执行一个 Include() 来预先加载属性。 Actions 有一个导航属性,User (Action.User)

1) 我的基本查询:

from a in Actions
join u in Users on a.UserId equals u.UserId
select a

2) 第一次尝试:

from a in Actions.Include("User")
join u in Users on a.UserId equals u.UserId
select a

但是 Action.User 没有填充。

3) 尝试在查询之外立即将“用户”加载到导航属性中:

(from a in Actions
join u in Users on a.UserId equals u.UserId    
select a).Include("User")

在 LINQPad 中尝试包含时出现错误:

“System.Linq.IQueryable”不包含“Include”的定义,也没有找到接受“System.Linq.IQueryable”类型的第一个参数的扩展方法“Include”(按 F4 添加 using 指令或汇编引用)

我认为这是因为 LINQ 不支持 Include()。

所以我在 VS 中尝试;查询 2 运行,但返回未填充的用户属性。 查询 3 扩展方法似乎不存在,尽管它在没有查询的情况下确实存在于 Action 本身。

最佳答案

我已经弄明白了,还是感谢您的建议。 解决方案是这样做(我的问题中的第二次尝试):

var qry = (from a in Actions
join u in Users on a.UserId equals u.UserId    
select a).Include("User")

intellisense 在查询后没有显示 Include 的原因是因为我需要以下使用:

using System.Data.Entity;

这样做一切正常。

关于c# - LINQ 表达式语法如何与 Include() 配合使用以进行预加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6761104/

相关文章:

c# - 使用 ADO.NET (OleDb) 创建 Excel 工作表 --> 支持哪些数据类型?

c# - 将 LSB 和 MSB 相加以获得一个值

c# - 动态 linq group by 子句

asp.net-mvc-3 - EF 到 ADO.NET 的过渡

c# - 如何更新 Entity Framework 中的子列表?

c# - 在 C# 中的运行时设置 Entity Framework 连接字符串

c# - ObservableCollection<T>.Move(int,int) 是如何工作的?

c# - 没有 Entity Framework 但存储过程的 ASP.Net Core 2.0 API OData

c# - 在LINQ查询中动态设置表名

c# - 亚音速 3.0 : How to use LIKE on objects?