0
我有下面這個非常簡單的函數,它返回表中行的列表。EF 6自動添加行限制
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));
請注意,在那裏的最後一行,沒有理由就在那裏。應用程序開始拋出異常,因爲「SQL命令沒有正確結束」,只要重新啓動應用程序池就會自動修復問題。
任何人都知道爲什麼Entity Framework 6.1.3會在沒有任何原因的情況下添加額外的where子句?我使用Oracle.ManagedDataAccess.EntityFramework版本=「12.1.2400」與「Oracle.ManagedDataAccess」版本=「12.1.24160419」包。
您使用的是最新版本的Oracle驅動程序嗎? – DavidG
根據:[nuget包](https://www.nuget.org/packages/Oracle.ManagedDataAccess/)似乎我落後於一個小版本。如果你問的是管理的驅動程序。你有理由相信這可能是原因嗎?事情很少發生,所以我沒有具體的測試方法,如果我升級。 – Neel
作爲一種解決方法,我現在已經完成了這項工作。仍然不知道原因。如果未來出現問題,我會在此更新。 'Context.Configurations.Load(); var tbl = Context.Configurations.Local.Where(a => a.ActiveFlag == Constants.CSS_TRUE).ToList();' – Neel