3

我正在MVVM使用 Entity Framework 进行项目5.0

我连接到托管数据库,有时实体框架会失去与数据库的连接。

当连接丢失时,重新连接到数据库的最佳方法是什么?

4

2 回答 2

2

在保存更改期间连接断开时,您只会得到异常。整个保存在由于异常而未提交的事务中完成,并且 EF 不会将其当前更改集标记为已完成。当发生特定异常时,您可以简单地尝试再次保存更改 - EF 将尝试打开新连接并执行相同的事务


例如:好吧,也许是这样的:

public virtual void SubmitChanges()
{
    if (DataContext != null)
    {               
        try
        {
             DataContext.SubmitChanges();
        }
        catch (Exception whenILostMyConnection)
        {
             SubmitChanges(); //recall the sumbitChanges
        }
    }             
}
于 2012-11-15T07:23:54.040 回答
0

您可以在 Windows Azure 源代码中看到答案。Azure CRUD 操作通常会将它们放入循环中,这些循环会多次尝试执行相同的操作,从而导致某些特定异常。但是您必须非常小心,在大多数情况下,重试处理会导致您的应用程序变慢。

于 2012-11-15T10:32:38.597 回答