0

使用 EF 4.1,我正在尝试用 50000 查询大型数据表。我为 DbContext 设置了相对较高的超时时间:

   public class YourContext : DbContext
{
  public YourContext()
    : base("YourConnectionString")
  {
    // Get the ObjectContext related to this DbContext
    var objectContext = (this as IObjectContextAdapter).ObjectContext;

    // Sets the command timeout for all the commands
    objectContext.CommandTimeout = 500;
  }
}

但它似乎仍然不够,但当我采取(10000)时,它可以工作。我在这里没有服务器端分页的选项。很高兴知道如何摆脱这种超时情况。

它是由实现或存储库模式引起的还是 EF 无法处理大数据?

4

3 回答 3

1

你在那里走了一条糟糕的路……

从数据库加载所有数据是一种不好的做法。
如果您实现了服务器端分页,或者如果您不需要填充,则只需实现按需加载功能会更好。

我怀疑用户将查看所有数据,因此无需从数据库中获取它。

最好每天多花一些额外的时间,但要做到这一点。

正如实践表明的那样,您将收到客户/客户/用户对性能的抱怨,您必须正确地重写漏洞。

你最好三思而后行,不要偷懒;)

于 2012-12-18T12:06:22.947 回答
0

EF 可以处理大数据。

它只是一个配置,因为您已经发现大多数“连接”都有(您也可以在 ADO.net 中使用 timeOut)。默认情况下,它设置为 30 秒,您可以更改它

于 2012-12-18T12:06:58.173 回答
0

在您当前的情况下,很难确定 EF 可以处理的最大数据量。我建议选择延迟加载,但这并不能完全解决问题。如果我在你的地方,我会尝试使用一些缓存功能,因为在你的情况下分页也不可行。

这些只是我的建议而不是解决方案。

于 2012-12-18T12:09:46.373 回答