EF4 LINQ оператор истекает при использовании MEF - PullRequest
2 голосов
/ 14 мая 2011

Мы используем MEF для настройки определенных функций нашего приложения ASP MVC.Мы используем .NET 4.0 и SQL Server 2008. Мы столкнулись с очень странным поведением при использовании EF4 и оператора LINQ для представления внутри сборки MEF.

Приведенный ниже код будет иметь тайм-аут при выполнении как часть импортированной сборки с использованием MEF.

Он будет запущен менее чем за секунду, когда он будет извлечен и выполнен в основной сборке.

Если диапазон дат установлен равным одному дню, реализация MEF в конечном итоге завершится примерно через 15секунд.

Если мы используем таблицу вместо представления, она будет работать нормально в реализации MEF <1 сек. </p>

Приведенный ниже код и представление работают безупречно везде, кроме случаев, когда они выполняются внутри MEF.code.

Вносит ли MEF какие-либо особые ограничения или проблемы при использовании EF4 в веб-приложении MVC?Мы можем обойти эту проблему, но я хотел бы знать, является ли это признаком того, что мы неправильно используем MEF?

DateTime startDate = DateTime.Now.AddDays(-30);
DateTime endDate = DateTime.Now;

var _Items = dto.ClientContext.vwItemLists.Where(c => c.CreatedOn > startDate && c.CreatedOn <= endDate);

_context.TotalItemsMatched = _Items.Count();

1 Ответ

0 голосов
/ 16 ноября 2011

Вероятно, проблема возникает из-за неверного кэшированного плана выполнения. См. этот похожий вопрос .

Этот ответ работал для меня в прошлом, когда я был почти уверен, что виновником было какое-то разовое разложение, но обратите внимание на комментарий, что это краткосрочное исправление, и в во многих случаях проблема может возникнуть снова, если вы не решите ее причину.

Он ссылается на эту статью , которая, к сожалению, является довольно трудоемким чтением, чтобы помочь вам попытаться определить, почему сначала был кэширован неверный план выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...