在哪里使用带有dataContext的try / catch? (处置)

时间:2014-12-31 17:09:21

标签: entity-framework exception dbcontext

好吧,我真的不知道何时或如何处理数据上下文。例如,我有这段代码:

try
{
    using(MyEntities myDbContext = new MyEntities())
    {
         //My code that get entities from data base and work with them
    }
}
catch
{
    throw;
}

在这种情况下,如果我没有错,如果一切顺利,则处理数据上下文。但是,如果在我的代码中出现问题并抛出异常,我的数据上下文是否被处理?

出于这个原因,我正在考虑另一种选择:

using(MyEntities myDbContext = new MyEntities())
{
    try
    {
        //My code
    }
    catch
    {
        myDbContext.Dispose;
        throw;
    }
}

在这种情况下,我将dbcontext放入catch中,所以我认为这是处理掉的。但我不知道这是一个好的解决方案,还是有其他选择。

使用dbContext和free资源(主要是数据库连接)处理异常的最佳方法是什么?

非常感谢。

1 个答案:

答案 0 :(得分:2)

您需要做的就是确保Dispose()

using(MyEntities myDbContext = new MyEntities())
{
     //My code that get entities from data base and work with them
}

相当于但不那么优雅:

MyEntities myDbContext = new MyEntities();
try{
  ... (your code)
}
finally{
   myDbContext.Dispose();
}

抛出,捕获或未捕获异常并不重要......