0

我正在使用具有存储库模式的实体框架,但我们需要调用存储过程,所以我们最终使用 EF 创建 DAL 类 DBContext 在 DAL 类中有局部私有变量,私有上下文;

我尝试在 Repository Class Constructor 中实例化 DBContext

public VRepository( IDataAccessObjectFactory daoFactory)
{
        _daoFactory = daoFactory;
        context = _daoFactory.GetEFContext<DbEntities>();           
}

所有的Services调用DAL的repository类的一个方法,所有repository类都继承自IDisposable并在repository类中实现disposable方法

public void Dispose()
    {
        if (context != null)
        {

            context.Dispose();
            // GC.SuppressFinalize(this);
        }
    }

在方法中完成操作后,我尝试从服务层调用上述 dispose 方法,例如调用 BLL 的 dispose 方法最终阻止处理 DBContext 对象(我有 WEB API,WEB API -> BLL -> DAL)。

即使在调用 context.Dispose() 之后,EF 创建的 Sql 连接也没有关闭。Any1 可以建议我关闭 SQL 连接并处理 SQL 连接的正确方法。如果我不处理,SQL 连接数会变为 100,这在一段时间内不允许新连接或工作人员重新启动。请让我知道在存储库层方法完成后立即处理上下文的有效方法。

4

0 回答 0