我正在MVVM
使用 Entity Framework 进行项目5.0
。
我连接到托管数据库,有时实体框架会失去与数据库的连接。
当连接丢失时,重新连接到数据库的最佳方法是什么?
我正在MVVM
使用 Entity Framework 进行项目5.0
。
我连接到托管数据库,有时实体框架会失去与数据库的连接。
当连接丢失时,重新连接到数据库的最佳方法是什么?
在保存更改期间连接断开时,您只会得到异常。整个保存在由于异常而未提交的事务中完成,并且 EF 不会将其当前更改集标记为已完成。当发生特定异常时,您可以简单地尝试再次保存更改 - EF 将尝试打开新连接并执行相同的事务
例如:好吧,也许是这样的:
public virtual void SubmitChanges()
{
if (DataContext != null)
{
try
{
DataContext.SubmitChanges();
}
catch (Exception whenILostMyConnection)
{
SubmitChanges(); //recall the sumbitChanges
}
}
}
您可以在 Windows Azure 源代码中看到答案。Azure CRUD 操作通常会将它们放入循环中,这些循环会多次尝试执行相同的操作,从而导致某些特定异常。但是您必须非常小心,在大多数情况下,重试处理会导致您的应用程序变慢。