C# 如何在实体框架中处理瞬时故障?
我想问一些问题。我有一些实体例外 我在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:执行命令定义时出错。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
有关详细信息,请参见内部异常 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。我的服务器是本地的。我没有将服务注册为临时服务等。如何注册?我已经编辑了我的帖子并添加了一些代码。谢谢