我在下面有一个非常简单的函数,它返回表中的行列表。
public IEnumerable<Configuration> GetConfigurations()
{
var tbl = Context.Configurations.AsNoTracking().Where(a => a.ActiveFlag == 'Y').ToList();
return tbl;
}
问题有时在IIS应用程序池重新启动时,上面的代码在SQL下创建:
SELECT
"Extent1"."ID" AS "ID",
"Extent1"."NAME" AS "NAME",
"Extent1"."VALUE" AS "VALUE",
"Extent1"."DESCRIPTION" AS "DESCRIPTION",
"Extent1"."ACTIVE_FLAG" AS "ACTIVE_FLAG",
"Extent1"."CATEGORY_ID" AS "CATEGORY_ID"
FROM "SCHEMANAME"."CONFIGURATIONS" "Extent1"
WHERE ('Y' = "Extent1"."ACTIVE_FLAG")
WHERE (ROWNUM <= (50) );
注意那里的最后一行,没有理由在那里。应用程序开始抛出异常,因为&#34; SQL命令未正确结束&#34;当它发生时,只需重新启动应用程序池就可以自动修复问题。
任何人都知道为什么Entity Framework 6.1.3会在没有任何理由的情况下添加额外的where子句?我使用Oracle.ManagedDataAccess.EntityFramework version =&#34; 12.1.2400&#34;使用&#34; Oracle.ManagedDataAccess&#34;版本=&#34; 12.1.24160419&#34;封装
答案 0 :(得分:0)
更改了应用程序池回收后应用程序加载时EF加载第一个表的方式,如下所示修复了问题。
Context.Configurations.Load();
var tbl = Context.Configurations.Local.Where(a => a.ActiveFlag == 'Y').ToList();
问题没有再发生。