首页 > 解决方案 > 添加另一个 DbContext 的最佳方法

问题描述

所以我想知道将另一个附加DbContext到我的 ASP.NET 应用程序的最佳方法是什么。我正在努力实现DbContext我可以在我的代码中的任何地方使用,而不仅仅是在控制器中。我试图将其添加为服务但失败了。在Configure我正在创建一个新类IHubContext以连接到客户端,但我还需要从数据库中检索数据,所以我正在考虑编辑构造函数BaloonDbContext根据需要添加。我想听听你们说什么是最好的。

启动.cs

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddDbContext<DiscordContext>();
    ...
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...
    StartBalloon(app.ApplicationServices.GetRequiredService<IHubContext<BalloonHub>>());
    ...
}

private static void StartBalloon(IHubContext<BalloonHub> context)
{
    Globals.Bln = new Balloon(context); // Starting balloon
}

DiscordContext.cs

public class DiscordContext : DbContext
{
    public DbSet<DbUser> Users { get; set; }
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseMySQL("---connection_string----");
    }
}

气球.cs

public class Baloon
{
    private IHubContext<BalloonHub> _context;
    private DbContext _db;
    private List<BalloonPlayer> _currentPlayerList = new();
    public int? WhenToPop;
    public int? CurrentLevel;
    public int? BotValue;
    public int? CurrentValue;
    public bool Pooped;
    public bool Running;
    public Balloon(IHubContext<BalloonHub> context)
    {
        _context = context;
        Task.Run(Main);    // Let's imagine that there is need for data from database(DbContext)
    }
}

标签: c#entity-frameworkentity-framework-core

解决方案


您可以为控制器创建一个基类,将 DbContext 暴露给您的 deride 类。类似的概念也适用于其他普通商务舱。

试试看下面的网址。

我什么时候应该创建一个新的 DbContext()


推荐阅读