【发布时间】:2018-10-31 05:57:54
【问题描述】:
我正在尝试遵循 Julia Lerman 的《Programming Entity Framework 2nd edition》一书中的示例,但以下代码对我不起作用:
ObjectQuery<Contact> contacts = context.Contacts
.Where("it.FirstName = 'Robert'")
我收到以下错误:
Argument2:无法从“字符串”转换为“System.Linq.Expresions.Expression>”。
如何访问 ObjectQuery 的 Query Builder 方法?我使用的是Entity Framework 6,书中的示例使用的是Entity Framework 4。我的上下文类继承自DbContext,在本书的示例中,上下文类继承自ObjectContext。
Entity Framework 6 中是否仍在使用查询构建器方法?
【问题讨论】:
-
var contacts = context.Contacts.Where(it => it.FirstName == "Robert");在这种情况下,它是一个 lambda(linq 表达式也可以)。您应该阅读 lambda 语法,这是一个有用的链接:Lambda Expressions - C# Programming Guide -
好的,但是我的代码有什么问题,和书中的一样,我不想使用 IEnumerable.Where 扩展方法。在我的示例中,查询生成器方法在哪里。
-
context的类型以及Contacts属性的类型是什么?我分别假设DbContext和DbSet<Contact>。 -
是的,完全正确。我正在了解查询生成器方法,Julia Lerman 的第二版,第 235 页
-
查看此链接ObjectQuery<T>.Where Method 以获取有关如何使用查询生成器的示例。与使用提供类型安全的表达式相比,这种方法已经过时了。发布日期是什么时候?
标签: c# entity-framework entity-framework-6