DbContext内存管理

时间:2015-10-15 19:57:03

标签: c# entity-framework

我有一个通用的存储库,我曾经在应用程序的开头注入一个Job类。此作业类打算在循环中永久运行,因此存储库使用的上下文只创建一次。问题是几天之后应用程序消耗了1gb的内存(在执行的开始时消耗了40mb)。

之后,我在Dispose中实现了DBContext类的Repository,并开始在每个循环中实例化它。问题解决了,但我失去了DIP原则。这是新代码:

public class Job
{

   do{
        //some code
        using (var repository = new Repository<User>())
        {
            repository.Save(User);
        }
     }while(true);
} 

存储库:

    public void Save(T entity)
    {
        DbSet.Add(entity);
        _context.SaveChanges();
    }

    private IDbSet<TEntity> DbSet
    {
        get { return _context.CreateSet<TEntity>(); }
    }

是否有一些解决方法或提示使上下文不消耗此内存,只实例化一次?或者我必须在这种情况下丢失IoC模式吗?

感谢。

0 个答案:

没有答案