Taa*_*aai 5 c# sql oracle entity-framework
我正在使用Entity Framework 5,我想从Oracle 10g数据库中选择数据。问题是数据库表很大,Entity Framework生成的查询无效。我想摆脱那些CAST( [column] AS [type] )
。有什么设置可以关闭它们吗?
C#代码:
var context = new APPDB();
var q = context.APP_TABLE.Where(i => i.ID == 123);
// This is how I did get the generated SQL query
var str = ((System.Data.Objects.ObjectQuery) q ).ToTraceString();
Run Code Online (Sandbox Code Playgroud)
生成的查询:
SELECT
CAST( "Extent1"."ID" AS number(10,0)) AS "C1",
"Extent1"."DESCRIPTION" AS "DESCRIPTION"
FROM "APP"."APP_TABLE" "Extent1"
WHERE (123 = ( CAST( "Extent1"."ID" AS number(10,0))))
Run Code Online (Sandbox Code Playgroud)
我想要的是生成性能更好的查询的代码:
SELECT
"Extent1"."ID" AS "C1",
"Extent1"."DESCRIPTION" AS "DESCRIPTION"
FROM "APP"."APP_TABLE" "Extent1"
WHERE
"Extent1"."ID" = 123
Run Code Online (Sandbox Code Playgroud)
小智 3
迟做总比不做好)
如果您使用代码优先和手动映射类,请对 int 属性使用 HasColumnType("INT") 配置。
例如:
var entity = builder.Entity<APP_TABLE>();
entity
.HasKey(x => x.ID)
.ToTable("APP_TABLE", "SCHEMA");
entity
.Property(x => x.ID)
.HasColumnType("INT");
Run Code Online (Sandbox Code Playgroud)