C# 如何在实体框架中处理瞬时故障?

C# 如何在实体框架中处理瞬时故障?,c#,sql-server,entity-framework-6,C#,Sql Server,Entity Framework 6,我想问一些问题。我有一些实体例外 我在C#Windows应用程序和SQL Server 2017中使用Entity Framework 6.2.0。我的应用程序运行在8台客户端PC和服务器上 我真的不知道如何避免这种例外情况的发生。这与连接超时有关吗?如何解决这个问题 我得到一个例外: System.Data.Entity.Core.EntityException:引发了一个异常,该异常可能是由于瞬时故障引起的 如果您连接到SQL Azure数据库,请考虑使用SQLAzURE执行策略。 Syst

我想问一些问题。我有一些实体例外

我在C#Windows应用程序和SQL Server 2017中使用Entity Framework 6.2.0。我的应用程序运行在8台客户端PC和服务器上

我真的不知道如何避免这种例外情况的发生。这与连接超时有关吗?如何解决这个问题

我得到一个例外:

System.Data.Entity.Core.EntityException:引发了一个异常,该异常可能是由于瞬时故障引起的

如果您连接到SQL Azure数据库,请考虑使用SQLAzURE执行策略。 System.Data.Entity.Core.EntityCommandExecutionException:执行命令定义时出错。
有关详细信息,请参见内部异常

System.Data.SqlClient.SqlException:事务(进程ID 58)在与另一个进程的锁|通信缓冲区资源上被死锁,并被选为死锁受害者。重新运行事务

一些代码:

try
{
    using (DataCtx.RTAD_BusinessLicenseEntities ctx = new DataCtx.RTAD_BusinessLicenseEntities())
    {
        err = "if(rv.TransactionStatus)=>InsertMode: " + this.txtSearchNRC.Text + ", " + this.TransactionID + ", " + paraChalenNumber.Value.ToString();
        ctx.SP_Vehicle_ApproveForExtendOperatorLicense(Helper.convertToAnscii(this.txtSearchNRC.Text), this.TransactionID, paraChalenNumber, true, true, "Approved");
    }
}
catch (Exception ex)
{
    Helper.WriteErrorLog("User Input => " + err + "\n\n" + ex.ToString());
    MessageBox.Show(ex.ToString(), "btnApply_Click_Err", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
在云环境中,您将发现该数据库已失败并被删除 连接定期发生。那部分是因为你要去 与本地环境相比,通过更多的负载平衡器 您的web服务器和数据库服务器具有直接物理 连接。此外,有时当您依赖于多租户时 服务您将看到对该服务的呼叫变慢或超时,因为 其他使用该服务的人正在猛烈地攻击它。换句话说 在某些情况下,您可能是频繁访问服务的用户, 而且,该服务故意限制您的访问,拒绝连接 以防止您对本协议的其他承租人造成不利影响 服务

资料来源:

以下是如何使用EF 6进行修复:

// EF follows a Code based Configuration model and will look for a class that
// derives from DbConfiguration for executing any Connection Resiliency strategies
public class EFConfiguration : DbConfiguration
{
    public EFConfiguration()
    {
        AddExecutionStrategy(() => new SqlAzureExecutionStrategy());
    }
}

这看起来不像是超时(尽管我不能向你保证情况并非如此)。不幸的是,如果没有任何导致此异常的代码,很难判断。您如何注入您的服务/存储库?使用ASP.NET中的依赖项注入?您是否将服务注册为瞬态、作用域或单例服务?抱歉,注册不完整。我正在使用存储过程。我不使用asp.net。我的服务器是本地的。我没有将服务注册为临时服务等。如何注册?我已经编辑了我的帖子并添加了一些代码。谢谢