【发布时间】:2012-07-17 20:53:25
【问题描述】:
当我使用以下代码块(C#)时:
var query = context.Set.Where(o => o.Email.Contains("Mail@gmail.com"));
var stringQuery = ((System.Data.Objects.ObjectQuery)query).ToTraceString();
linq 生成以下查询:
SELECT *
FROM [SET] AS [Extent1]
WHERE [Extent1].[Email] LIKE '%Mail@gmail.com%'
当我使用以下代码块时:
string email = "Mail@gmail.com";
var query = context.Set.Where(o => o.Email.Contains(email));
var stringQuery = ((System.Data.Objects.ObjectQuery)query).ToTraceString();
linq 生成以下查询:
SELECT *
FROM [Set] AS [Extent1]
WHERE [Extent1].[Email] LIKE @p__linq__0 ESCAPE N'~'
如何让 linq 像第一种情况一样生成查询,而无需对字符串进行硬编码,而是作为字符串参数传递?
【问题讨论】:
-
你为什么要这个?对我来说似乎很好
-
数据库中第一个查询的性能比第二个要好。
-
我也遇到了巨大的性能差异。对我来说大约是 1:5
标签: linq-to-sql c#-4.0 entity-framework-4