gpt4 book ai didi

c# - Entity Framework : Recovered connectivity still yields 11001 error

转载 作者:行者123 更新时间:2023-11-30 20:53:55 24 4
gpt4 key购买 nike

我正在使用 Entity Framework 和 SQL Server 进行一些错误恢复。我希望我的应用程序在恢复与数据库的连接后在后台重新加载信息。

我的测试场景:

  • 将我的机器设置为飞行模式
  • 启动应用程序;预期错误:(提供者:TCP 提供者,错误:0 - 不知道这样的主机。)
  • 应用程序将通过使用 Entity Framework 执行查询每 5 秒重试一次连接
  • 关闭飞行模式
  • 经过 10 次以上的尝试;仍然存在相同的错误:(提供者:TCP 提供者,错误:0 - 不知道这样的主机。)

这让我相信执行查询不会在连接恢复后尝试打开新的传输层连接。

有什么方法可以告诉 Entity Framework(或 ADO.NET)尝试重新打开连接?

更新:因为我使用的是 Entity Framework 6,所以我可以使用 SqlAzureExecutionStrategy而不是手动编码或企业库重试策略。

最佳答案

我会这样做:

private static void TryToConnect(DbContext dbContext, int connectionCounter)
{
// in ConnectionString you can set the Connect Timeout = 5000; OR

// IN CODE:
// var adapter = (IObjectContextAdapter)dbContext;
// var objectContext = adapter.ObjectContext;
// objectContext.CommandTimeout = 5000;

try
{
dbContext.Database.Connection.Open();
}
catch (Exception ex)
{
if (connectionCounter < 10)
{
TryToConnect(dbContext, connectionCounter++);
}
else
{
throw;
}
}
}

从外部你可以这样调用它:TryToConnect(myDbContext, 0);

关于c# - Entity Framework : Recovered connectivity still yields 11001 error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19566307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com