EF 6自动添加行限制

时间:2017-02-09 22:09:58

标签: c# oracle entity-framework where-clause rownum

我在下面有一个非常简单的函数,它返回表中的行列表。

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;封装

1 个答案:

答案 0 :(得分:0)

更改了应用程序池回收后应用程序加载时EF加载第一个表的方式,如下所示修复了问题。

 Context.Configurations.Load(); 
 var tbl = Context.Configurations.Local.Where(a => a.ActiveFlag == 'Y').ToList();

问题没有再发生。