小编Mic*_*ell的帖子

在启动时注册多个 DbContext 实例以在通用存储库中使用

我正在尝试创建一个通用存储库,它接受 2 种通用类型,例如

public class EfRepository<T, TS> : IAsyncRepository<T,TS> where T : BaseEntity
                                                           where TS : DbContext
    {
..........
}
Run Code Online (Sandbox Code Playgroud)

在我的 startup.cs 我有通常的映射:

services.AddScoped<DbContext, ConfigDbContext>();

我现在如何向 DbContext 添加另一个映射?我尝试在 DbContext 和我创建的另一个上下文之间添加另一个映射,但它只使用第一个映射。

我有多个需要使用的数据库,理想情况下希望每个数据库都有一个 DbContext,但我看不到具有多个 DI 映射的方法。

在我的 EfRepository 类中,当我向代码中添加额外的 DbContext 并使用它时,以下代码异常:

protected readonly DbContext _dbContext;
        public EfRepository(DbContext dbContext)
        {
            this._dbContext = (TS)dbContext;
        }
Run Code Online (Sandbox Code Playgroud)

例外是无法从 Type1 转换为 Type2,我知道这是因为 DbContext 绑定到我的 startup.cs 中的 Type1。

我如何(如果可能)以通用方式使用多个 DbContext?

entity-framework-core .net-core asp.net-core

1
推荐指数
1
解决办法
2028
查看次数