gpt4 book ai didi

c# - DbExecutionStrategy 重试次数超过 MaxRetryCount

转载 作者:行者123 更新时间:2023-11-29 21:14:04 27 4
gpt4 key购买 nike

我使用 DbExecutionStrategy 使我的程序在查询服务器时支持连接超时,但它没有按预期工作。

这是我的类(class):

public class MyExecutionStrategy : DbExecutionStrategy
{
static MyExecutionStrategy()
{
RetriesPerInstance = new Dictionary<int, int>();
}

private const int MaxRetryCount = 5;
private static TimeSpan _maxDelay = new TimeSpan(0, 0, 3);



private int _instanceNo;

public MyExecutionStrategy() : base(MaxRetryCount, _maxDelay)
{
_instanceNo = ++TotalInstances;
RetriesPerInstance[_instanceNo] = 0;
}

public static Dictionary<int, int> RetriesPerInstance { get; private set; }

public static int TotalRetries
{
get
{
return RetriesPerInstance.Values.Sum();
}
}

public static int TotalInstances { get; private set; }

protected override bool ShouldRetryOn(Exception ex)
{
RetriesPerInstance[_instanceNo]++;

return true;
}
}

这是我的查询:

private void Form1_Load(object sender, EventArgs xe)
{
var dengineEntities = new dengineEntities();

try
{
var proj = dengineEntities.motorista_erro.ToArray();
}
catch (Exception e)
{
var tries = MyExecutionStrategy.TotalRetries;
}
}

对于单个ToArray,它返回42次重试,并在抛出RetryLimitExceededException之前实例化14个策略。

为什么它不会在 5 次尝试后停止,为什么它会为单个查询创建多个实例?有什么我没有看到的吗?

enter image description here

这些是我的上下文类:

public partial class dengineEntities : DbContext
{
public dengineEntities()
: base("name=dengineEntities")
{
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}

public virtual DbSet<motorista_erro> motorista_erro { get; set; }

}
public partial class motorista_erro
{
public int MOT_ID { get; set; }
public string MOT_NOME { get; set; }
public bool MOT_SIT_FUNC_ID { get; set; }
public int IDEMP { get; set; }
}
<connectionStrings>
<add name="dengineEntities" ...etc...etc../>
</connectionStrings>

最佳答案

它在重试 5 次时停止,查看 RetriesPerInstance 屏幕截图中的值,每个值都有 6 或 0。 6 次重试意味着它重试了 5 次,第 6 次停止了。

看来您的问题出在其他地方。 Form1_Load 被调用了多少次?

关于c# - DbExecutionStrategy 重试次数超过 MaxRetryCount,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36109421/

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