aierda 2023-12-20 13:48 采纳率: 72.1%
浏览 16
已结题

关于EF的SetExecutionStrategy问题

问题描述: 我使用的是EF core,而EF是有一个数据库重连策略的,通过SetExecutionStrategy
进行设置,大致的代码如下

public class EFConfiguration : DbConfiguration
    {
        public EFConfiguration()
        {
            SetExecutionStrategy(SqlProviderServices.ProviderInvariantName, () => new SqlServerExecutionStrategy(3, TimeSpan.FromSeconds(5)));
        }
    }
//这里的3表示重连多少次,5表示每次重连的时间间隔

而我的数据库上下文是这样的

using System;
using System.Collections.Generic;
using Dispenser.Data.Entities;
using Microsoft.EntityFrameworkCore;

namespace Dispenser.Data;

//而我这里不是DbConfiguration,而是DbContext,似乎无法在这里使用SetExecutionStrategy
public partial class MyDbContext : DbContext 
{
    private string _connectionString;

    public MyDbContext (string connectionString)
    {
        _connectionString = connectionString;
    }

    public virtual DbSet<AutoUnload> AutoUnloads { get; set; }

    。。。。

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(_connectionString);
    }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.UseCollation("Chinese_Hong_Kong_Stroke_90_CI_AS");


        。。。。
   
        OnModelCreatingPartial(modelBuilder);
    }

    partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}

提出问题:
DbContext 里面是否可以使用SetExecutionStrategy,如果不行,我该在哪个地方进行设置呢?

  • 写回答

20条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-12-20 13:49
    关注
    获得2.00元问题酬金

    引自强大而免费的微信小程序:皆我知道

    可以在 DbContext 的构造方法中使用 SetExecutionStrategy 方法来设置重连策略。在你的情况下,你可以在 MyDbContext 的构造方法中添加 SetExecutionStrategy 方法的调用,如下所示:

    public MyDbContext (string connectionString)
    {
        _connectionString = connectionString;
        SetExecutionStrategy(SqlProviderServices.ProviderInvariantName, () => new SqlServerExecutionStrategy(3, TimeSpan.FromSeconds(5)));
    }
    

    这样,每次创建 MyDbContext 对象时都会设置重连策略。

    或者,你也可以创建一个派生自 MyDbContext 的自定义上下文类,并在该类的构造方法中添加 SetExecutionStrategy 方法的调用。

    希望能对你有所帮助!如果还有其他问题,请随时问我。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月28日
  • 创建了问题 12月20日