asp.net-mvc-4 – 加入前包含不起作用实体框架6
在一个MVC4项目中
我在LINQ查询中使用include: > var tests = from ct in context.CourseTest.Include("Test") join uc in > context.UserCourse on ct.CourseID equals uc.CourseID select ct; CourseTest有一个测试对象 这适用于“使用上下文” 但一旦返回控制器使用: return tests.ToList(); 该 UserCourse.Test正在处理:
这曾经在旧版本中正常工作(不确定我是否使用连接测试它). 我该怎么做才能坚持下去? 解决方法
有时,include子句被忽略.我不是所有情况都在脑海中,但加入,分组和预测实体将导致EF忽略包含.
在您的示例中,如果您这样做: var Tests = from ct in context.CourseTest join uc in context.UserCourse on ct.CourseID equals uc.CourseID select ct; return Tests.Include("Test").ToList(); 这将起作用,因为包含不会被投影,分组或连接子句覆盖. 只是另一件事: 1 /你的加入条款真有用吗? (只有当你想要缪斯有用户课程的课程测试时.) 2 /对于您处理的上下文,这是因为您的DbContext使用延迟加载.您的include子句被忽略但是延迟加载而不是null,您的测试导航属性包含代理(即不为null).因此,当您访问导航属性时,代理会看到未加载实际数据并执行查询以获取测试数据.您的上下文已被处理,因此您有例外. EF生成查询但仅在迭代结果时执行查询(在foreach循环中或使用ToList(),ToArray(),ToDictionary(),…)因此,如果您的数据访问层为您的上下文使用using子句,总是一定要迭代你的结果,以使EF执行查询(例如使用ToList()). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 服务器端命令行
- angularjs_百度地图API_根据经纬度定位_示例
- ABP官方文档(六)【集成OWIN,调试】
- 如何将我的模型数据(列表)映射到另一个viewmodel数据(列表)
- 在按钮执行回发之前触发的asp:按钮上添加jQuery click事件
- asp.net-mvc – localhost拒绝在visual studio中连接Error
- ASP.Net购物车应用
- asp.net-web-api2 – 创建新的IHttpActionResult动作结果方
- asp.net-mvc – 在ASP.NET MVC中实现自定义配置文件提供程序
- entity-framework-4 – 在多层体系结构中使用Autofac