LINQ将字符串转换为特殊字符

时间:2017-11-30 18:13:06

标签: c# oracle entity-framework linq entity-framework-6

我正在使用此查询从数据库中获取数据。

string nfc = "53f8372c";    
var temp = db.tempTable.AsNoTracking().Where(
               x =>
                   x.uid.Equals(nfc, StringComparison.CurrentCultureIgnoreCase)
                   && x.ENDED == null
                   && x.STATUS.Equals(Constants.ACTIVE)
              );

从此查询生成的sql是:

{SELECT 
"Extent1"."ID" AS "ID", 
"Extent1"."uid" AS "uid", 
"Extent1"."ENDED" AS "ENDED", 
"Extent1"."STATUS" AS "STATUS", 
FROM "tempTable" "Extent1"
WHERE (("Extent1"."uid" = :p__linq__0) AND ("Extent1"."ENDED" IS NULL) AND ('Active' = "Extent1"."STATUS"))}

为什么将 53f8372c 转换为:p__linq__0

1 个答案:

答案 0 :(得分:6)

那只是参数化SQL。如果查看传递给查询的参数,您会发现:p__linq__0的值为53f8372c

此参数化很有用,因为服务器可以缓存查询计划并使用不同的参数值将其重用于同一查询。