2017-02-09 3 views
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 добавит лишний пункт где-либо без какой-либо причины? Я использую Oracle.ManagedDataAccess.EntityFramework версии = "12.1.2400" с пакетом "Oracle.ManagedDataAccess" = "12.1.24160419".

+0

Используете ли вы последнюю версию драйвера Oracle? – DavidG

+0

В соответствии с: [пакет nuget] (https://www.nuget.org/packages/Oracle.ManagedDataAccess/) Кажется, я за одной младшей версией. Если вы спрашиваете об управляемых драйверах. У вас есть основания полагать, что это может быть причиной? вещь проблема редко, поэтому у меня нет конкретного способа ее тестирования, если я обновляюсь. – Neel

+0

В качестве обходного решения я сделал это сейчас. Все еще не знаю причину. Я буду обновлять здесь, если проблема не появится в будущем. 'Context.Configurations.Load(); var tbl = Context.Configurations.Local.Where (a => a.ActiveFlag == Constants.CSS_TRUE) .ToList(); ' – Neel

ответ

0

Изменен способ загрузки EF 1-й таблицы, когда приложение загружается после повторного использования пула приложений, как указано ниже.

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

Проблема не повторилась.

Смежные вопросы