使用EF 4.1,我试图用5万个查询大数据表。我为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无法处理大数据?
答案 0 :(得分:1)
那里你走的路很糟糕......
从数据库加载所有数据是一种不好的做法 如果您实现服务器端分页,或者如果您不需要填充只是实现按需加载功能,那会更好。
我认为用户将查看所有数据,因此无需从数据库中获取数据。
最好多花一些时间/天,但要做得好。
正如练习所示,你会得到客户/客户/用户对性能的抱怨,你必须正确地重写这个洞。
你最好三思而且不要懒惰;)
答案 1 :(得分:0)
EF可以处理大量数据。
这只是一个配置,因为你已经发现大多数“连接”都有(你也在ADO.net中使用timeOut)。 默认情况下,它设置为30秒,您可以更改它
答案 2 :(得分:0)
很难确定EF在你当前场景中可以处理的最大数据。我建议选择延迟加载,但它不会完全解决问题。如果我在你的地方我会尝试使用一些缓存功能,因为在你的情况下分页也是不可行的。
这些只是我的建议而不是解决方案。