使用MEF时,EF4 LINQ语句超时

时间:2011-05-13 21:02:02

标签: asp.net-mvc entity-framework-4

我们正在使用MEF来自定义ASP MVC应用程序的某些功能。我们使用的是.NET 4.0和SQL Server 2008.当在MEF程序集内部的视图中使用EF4和LINQ语句时,我们遇到了一些非常奇怪的行为。

使用MEF作为导入程序集的一部分执行时,下面的代码将超时。

当它在主组件中拉出并执行时,它将在不到一秒的时间内运行。

如果日期范围设置为一天,MEF实施最终将在大约15秒内完成。

如果我们使用表而不是视图,它将在MEF实现中正常工作<1秒。

除了在MEF代码中执行外,下面的代码和视图无处不在。

在MVC Web应用程序中使用EF4时,MEF是否会引入任何特殊限制或问题?我们可以找到解决这个问题的方法,但是我想知道这是否是我们使用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 :(得分:0)

由于缓存执行计划错误,可能会出现此问题。请参阅this similar issue

This answer过去对我有用,当时我很确定某种一次性腐败是罪魁祸首,但请注意这是一个短期解决方案,在很多情况下是如果您没有解决问题的根源,问题可能会再次出现。

他提到了this article,这是一个不幸的重读,可以帮助你尝试找出为什么首先缓存了错误的执行计划。