首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在EF中询问上下文,它的跟踪集有多大?

有没有办法在EF中询问上下文,它的跟踪集有多大?
EN

Stack Overflow用户
提问于 2016-08-12 05:03:18
回答 1查看 26关注 0票数 1

在EF中,我遇到了一个相当典型的问题。随着我继续访问我的上下文,它在detect changes中跟踪和枚举的项数会增加。最终,一切都变得缓慢起来。以下是我目前为解决这个问题所做的工作:

代码语言:javascript
复制
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是任意选择的,不能保证有人不会只用一次访问就插入一百万个东西。有没有办法反问上下文本身是否变得“太大了”?

或者,如果有人有更好的想法来解决这个问题,我愿意接受建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-12 05:47:55

每个上下文应该是一个单独的工作单元,因此我强烈建议您每个操作都有一个上下文(除非您真的必须这样做)。

有关EF当前跟踪结帐Context.ChangeTracker的更多信息,请参阅

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38906108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档