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