首页 新闻 会员 周边

EF6的Where方法

0
悬赏园豆:5 [已解决问题] 解决于 2014-03-11 12:28

从EF4更新到EF6(修改了一些引用的命名空间),发现以下语句在EF4上是OK的,更新到6后编译错。


var articles = entities.Articles.Include("User")
.Where("it.User.UserName = @UserName", new ObjectParameter("UserName", UserName))

说没有这样的Where方法。

entities.Articles.Include("User")这个本来得到的类型是ObjectQuery,EF6里怎么就变成DbQuery了?

问题补充:

还有

if (!userPage.PageDetails.IsLoaded)
            {
                userPage.PageDetails.Load();
            }

 

这个IsLoaded和Load都出错,EF6不需要这两个东西吗?

 

还有

db.HomeAds.Attach(homead);
                db.ObjectStateManager.ChangeObjectState(homead, EntityState.Modified);
                db.SaveChanges();

这个ObjectStateManager不能没了吗?

 

哦,这个ObjectStateManager解决了,可以用以下代替:
                db.Entry(homead).State = EntityState.Modified;

灰灰狼的主页 灰灰狼 | 初学一级 | 园豆:5
提问于:2014-03-09 18:53
< >
分享
最佳答案
0

不知道你有没有区分 Db-First 和 Code-First?

收获园豆:5
Launcher | 高人七级 |园豆:45045 | 2014-03-10 10:17

用的是Db-First,我再查查资料。。。

灰灰狼 | 园豆:5 (初学一级) | 2014-03-10 12:06

@灰灰狼: db.ObjectStateManager 这是 db-first 的,db.Entry 这是 code-first 的。

Launcher | 园豆:45045 (高人七级) | 2014-03-10 13:05

@Launcher: 一起用的是DB First,但是貌似EF6生成的表对象不包含Attach方法了,而且调用了Include方法的表对象的返回值类型也变了

灰灰狼 | 园豆:5 (初学一级) | 2014-03-10 13:56

@灰灰狼: 也可能是版本太乱了,EF4,5,6都引用过,晚上回家再仔细看看。

灰灰狼 | 园豆:5 (初学一级) | 2014-03-10 14:06

@灰灰狼: 请你仔细的区分 Db-First 和 Code-First。你得看你的 db 的基类是什么,在 Code-First 下, DbContext.DbSet<T> 确实有 Attach 方法:http://msdn.microsoft.com/en-us/library/gg696460(v=vs.113).aspx

而 Db-Frist 下,是 ObjectSet<T> 有 Attach 方法:

http://msdn.microsoft.com/zh-cn/library/vstudio/dd412719(v=vs.110).aspx

但是请注意,它是跟着 .Net Framework 版本走的,同 Code-First 的不一样。

 

Launcher | 园豆:45045 (高人七级) | 2014-03-10 14:13

@Launcher: 

这就是DB First吧,以前就是这样建的,现在用的是VS2013,EF6,看了生成的db类是DbContext,表对象也是DbSet,不知道是不是EF6里的新变化,还是我建的方法不对。

灰灰狼 | 园豆:5 (初学一级) | 2014-03-11 02:47

@灰灰狼: 我就是告诉你区别,因为你对为什么 6 上编译不通过有疑问,而我告诉你的是请看你的 db 的基类。我跟你说了 Code-First 一直都是用 DbContext,而 Db-First 是跟随 .Net Framework 版本走的。你能明白我的意思吗?理解了你的 db 的基类是什么后,这个问题解决起来很困难吗?

Launcher | 园豆:45045 (高人七级) | 2014-03-11 09:10

@Launcher: 明白了,可以解决了,也充了几个小时的电,知道怎么做了,多谢。

灰灰狼 | 园豆:5 (初学一级) | 2014-03-11 12:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册