Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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# 实体框架中的重试策略_C#_Sql Server_Entity Framework - Fatal编程技术网

C# 实体框架中的重试策略

C# 实体框架中的重试策略,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我想在一个使用实体框架连接到MSSQL 2012的项目中实现重试策略。我可以做到以下几点: using (var model = new MyModel()) { for (var i = 0; i < 3; i++) { try { model.MyEntities.Where(x => x.Index < 1000); break; } catch

我想在一个使用实体框架连接到MSSQL 2012的项目中实现重试策略。我可以做到以下几点:

using (var model = new MyModel())
{
    for (var i = 0; i < 3; i++)
    {
        try
        {
            model.MyEntities.Where(x => x.Index < 1000);
            break;
        }
        catch (Exception ex)
        {
        }
    }
}
使用(var model=new MyModel())
{
对于(变量i=0;i<3;i++)
{
尝试
{
模型MyEntities.Where(x=>x.指数<1000);
打破
}
捕获(例外情况除外)
{
}
}
}
但是,无论我想使用该模型进行查询,在任何地方执行此操作都非常麻烦。在模型本身中是否有实现这一点的方法,这样我就不必担心了


我想到的一种方法是使用继承
DbCommand
并重写
ExecuteScalar()
ExecuteNonQuery()
,等等,这样他们就可以重复调用基类的方法若干次,但想知道是否有更简单的方法可以做到这一点?

目前不可能做到这一点“使用模型”。您必须手动实现它。可以是在存储库中,也可以是在某些“数据访问适配器”中“如果你用的是这样的东西。或者,如果您想成为硬核:),您当然可以创建自己的IDbConnection、IDbCommand等。

您的示例代码尝试了三次,而不管之前的任何尝试结果如何。您的体系结构设置是什么使重试策略成为必要的?抱歉@DaveK,我忘记添加break语句来在获取成功时中断循环。请查看更新的代码。谢谢您的回答。我不确定我是否理解您在“存储库”中的意思,您的意思是在我的案例中在SQL Server端实现重试策略吗?我指的是存储库模式:或。