在EF中,我遇到了一个相当典型的问题。随着我继续访问我的上下文,它在detect changes中跟踪和枚举的项数会增加。最终,一切都变得缓慢起来。以下是我目前为解决这个问题所做的工作:
public class ContextGenerator
{
private IContext _context;
private string _connString;
private int accessCount;
public ContextGenerator(string conn)
{
_connString = conn;
}
public IContext Instance
{
get
{
if (accessCount > 100)
{
Dispose();
}
if (_context == null)
{
var conn = EntityConfigurationContext.EntityConnection(_connString);
_context = new MyDbContext(conn);
accessCount = 0;
}
++accessCount;
return _context;
}
}
public void Dispose()
{
_context.Dispose();
_context = null;
}
}这主要是为了防止我的上下文变得太笨拙,因为它每100次访问就会处理和创建一个新的上下文,但它看起来非常笨拙和混乱。此外,100是任意选择的,不能保证有人不会只用一次访问就插入一百万个东西。有没有办法反问上下文本身是否变得“太大了”?
或者,如果有人有更好的想法来解决这个问题,我愿意接受建议。
发布于 2016-08-12 05:47:55
每个上下文应该是一个单独的工作单元,因此我强烈建议您每个操作都有一个上下文(除非您真的必须这样做)。
有关EF当前跟踪结帐Context.ChangeTracker的更多信息,请参阅
https://stackoverflow.com/questions/38906108
复制相似问题