【问题标题】:ef5 ObjectQuery "like"ef5 ObjectQuery“喜欢”
【发布时间】:2012-11-22 20:34:22
【问题描述】:

我将 EF5 用于 ObjectQuery,

var query = this.ObjectContext.CreateQuery<Role>("SELECT VALUE n FROM Role as n");
query = query.Where("it.Name like '%@name%'", new ObjectParameter("name", name));

但它不起作用,它总是返回所有结果。 有任何想法吗? 非常感谢!

【问题讨论】:

    标签: sql entity-framework ado.net objectquery


    【解决方案1】:

    您想使用.Contains。在字符串列上使用时转换为 Sql LIKE

    【讨论】:

    • 谢谢,但是在objectquery中没有'Contains'命令,你能给我一个代码示例吗?
    • 这是在 Linq to Entities 中。在 E-Sql 中,您将使用 like - 根据 msdn doc msdn.microsoft.com/en-us/library/bb399359.aspx。检查为您的查询创建了哪些 sql 查询(您可能可以使用 .ToTraceString())。此外,您没有告诉参数的值是什么 - 例如,如果它是空字符串,您可能会选择所有内容。顺便提一句。为什么使用 E-SQL?
    • 根据ef性能考量msdn.microsoft.com/en-us/data/hh949853.aspx,我觉得ESQL会比Linq有更好的性能。
    • 在 EF 5.0(即 .NET Framework 4.5)和 EF6(.NET Framework 4 和 .NET Framework 4.5)中,Linq 查询会自动编译和缓存。在 EF4 中,您可以手动编译查询。编译的 Linq 查询和 E-SQL 查询的性能应该相似。
    • 我明白了。我想我会在 ObjectContext 上切换到 Linq 查询。无论如何,EF6 仍处于 Alpha 状态。顺便问一下,如何为 linq 查询设置 MergeOption.NoTracking?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2022-08-03
    • 2022-12-13
    • 1970-01-01
    • 2018-06-26
    相关资源
    最近更新 更多