首页 新闻 搜索 专区 学院

asp.net mvc 贪婪加载问题

0
悬赏园豆:10 [已解决问题] 解决于 2013-12-18 22:32
贪婪加载Include()方法为何只有一个参数,里面写不了Lambda表达式。求高手解答
 
雨哥的主页 雨哥 | 初学一级 | 园豆:7
提问于:2013-12-18 20:46
< >
分享
最佳答案
1

Include方法是加载子表数据的方法接收的参数就是子表的表名  db.Students.Include("ChildTableName")

收获园豆:10
Zery | 大侠五级 |园豆:6069 | 2013-12-18 20:58

如果想写成db.Students.Include(m=>m.ChildTableName)需要装什么插件么

雨哥 | 园豆:7 (初学一级) | 2013-12-18 21:00

@雨哥: 我可以确定你用的不是CodeFirst模式,应该是ModelFirst Or DBFirst 。CodeFirst继承的EF上下文是DbContext ,其它两种则是ObjectContext 。而Include(o=>o.Id) 这个方法 只在DbContetxt中才有,ObjectContext中只支持 Include("tableName")

Zery | 园豆:6069 (大侠五级) | 2013-12-18 21:06

@Zery: 

我是这样啊,继承了DbContext 。还是不行

 

雨哥 | 园豆:7 (初学一级) | 2013-12-18 21:37

@雨哥: 真不好意思,之前是凭以前印象回答的,刚才仔细研究了一翻终于知道结果了接收表达示的Include方法其实并不是EF所提供的而是Linq提供的一个扩展方法 

public static System.Linq.IQueryable<T> Include<T, TProperty>(this System.Linq.IQueryable<T> source, System.Linq.Expressions.Expression<Func<T,TProperty>> path)

所以这个方法只在IQueryable对象中才会有,你这样写Where(o=>o.Id==0).Include(o=>o.PartyA)

在include前加个where 方法后就可以找到你所需要的Include方法了,这个问题也让我更清楚了Include方法。感谢!

Zery | 园豆:6069 (大侠五级) | 2013-12-18 22:17

@Zery: 

加了后,就找不到Include方法了,怎么办

雨哥 | 园豆:7 (初学一级) | 2013-12-18 22:24

@雨哥: 引入 using System.Data.Entity; 程序集

Zery | 园豆:6069 (大侠五级) | 2013-12-18 22:28

@Zery: 非常、非常感谢

雨哥 | 园豆:7 (初学一级) | 2013-12-18 22:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册