Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DbExecutionStrategy重试次数超过MaxRetryCount_C#_Mysql_Entity Framework_Entity Framework 6 - Fatal编程技术网

C# DbExecutionStrategy重试次数超过MaxRetryCount

C# DbExecutionStrategy重试次数超过MaxRetryCount,c#,mysql,entity-framework,entity-framework-6,C#,Mysql,Entity Framework,Entity Framework 6,在查询服务器时,我使用DbExecutionStrategy使程序支持连接超时,但它没有按预期工作 这是我的班级: public class MyExecutionStrategy : DbExecutionStrategy { static MyExecutionStrategy() { RetriesPerInstance = new Dictionary<int, int>(); } private const int MaxR

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

这是我的班级:

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;
    }
} 
对于单个ToArray,它返回42次重试,并在抛出RetryLimitExceedexception之前实例化14个策略

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

这些是我的上下文类:

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>
公共部分类dengineEntities:DbContext
{
公营机构()
:base(“name=dengine实体”)
{
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
抛出新代码FirstException();
}
公共虚拟DbSet motorista_erro{get;set;}
}
公共部分类汽车驾驶员
{
公共int MOT_ID{get;set;}
公共字符串MOT_NOME{get;set;}
公共bool MOT_SIT_FUNC_ID{get;set;}
公共int-IDEMP{get;set;}
}

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


听起来你的问题在别的地方。Form1\u加载被调用了多少次

您能否显示在表单控制器中获取连接/使用ExecutionStrategy的代码?更新了Martin,但我使用entityframework,因此连接是基于dengineEntities connectionString创建的。。。为了测试..我关闭了我的网络以强制“无法连接”mysqlexception执行策略连接到哪里了,如果我不清楚我想知道的话,很抱歉。这是我在上面发布的公共类MyExecutionStrategy。我在我的dbconfigurationclass上设置了它。…公共类MyConfiguration:DbConfiguration{public MyConfiguration(){SetExecutionStrategy(“MySql.Data.MySqlClient”),()=>new MyExecutionStrategy();}}}是的,6是正确的,但我对它不满意的总实例数。。。就一次
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>