EF 6 - 查询时不能在过滤器中使用字符串

时间:2014-04-09 23:21:42

标签: entity-framework-6

我刚刚将一个asp.net项目从EF5升级到EF6。这给需要完成的代码带来了很多变化,我做了(更改名称空间和类似的东西)。

使用EF5我经常使用这种形式的查询:

var query = mycontext.mytable.Where(“my filter”)。选择(x => x);

现在,使用EF6我找不到在Where子句中使用字符串的方法。对于这样的代码,我总是得到这个错误:

System.Data.Entity.Infrastructure.DbQuery'不包含'Where'的定义和最佳扩展方法重载'System.Linq.Queryable.Where(System.Linq.IQueryable,System .Linq.Expressions.Expression>)'有一些无效的参数

非常感谢提前和再见...

1 个答案:

答案 0 :(得分:0)

嗯,似乎这个问题的答案是使用ObjectContext中的ObjectQuery。但是,这对我来说似乎有点混乱。看来这种类型的查询(var q = ctx.Employees.Where(string))一直是ObjectQueries,但在EF6之前,你可以从普通的上下文中做到这一点。现在,您必须从ObjectContext创建这些查询。

如果您遇到问题,我们可以从普通上下文(dbContext)获得一个ObjectContext:

var objectContext = (context as IObjectContextAdapter).ObjectContext;

然后,您可以从该上下文获取ObjectQuery。

似乎EF6已经改变了一些东西,肯定会给每个人带来更好的结果。我目前正在学习这些变化和补充。

非常感谢和再见......