在实体框架中重试策略

本文关键字:重试 策略 框架 实体 | 更新日期: 2023-09-27 17:57:45

我想在我正在进行的项目中实现重试策略,该项目使用连接到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)
        {
        }
    }
}

但是在我想使用模型进行查询的任何地方都这样做是非常麻烦的。有没有办法在模型中实现这一点,这样我就不必担心了?

我想到的一种方法是使用inherit和override DbCommandExecuteScalar()ExecuteNonQuery()等,以便它们重复调用基类的方法一定次数,但我想知道是否有更简单的方法可以做到这一点?

在实体框架中重试策略

目前不可能"使用模型"。你必须手动实现它。要么在存储库中,要么在某个"数据访问适配器"中(如果您正在使用类似的东西)。或者,如果你想走硬核:),你当然可以创建自己的IDbConnection、IDbCommand等。