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

Daw*_*asi 0 c# linq oracle entity-framework 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)
              );
Run Code Online (Sandbox Code Playgroud)

从此查询生成的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"))}
Run Code Online (Sandbox Code Playgroud)

为什么它将53f8372c转换为:p__linq__0

Jon*_*eet 6

那只是参数化SQL.如果查看传递给查询的参数,您将看到其:p__linq__0值为53f8372c.

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