在EntityFramework和.NET Core依赖注入中,如何使用一个dbContext和多个连接字符串?

3

我正在使用 EntityFramework Core.net core 2.0 进行项目开发,在执行 cron 作业时需要连接多个数据库来获取数据。我在 startup.cs 中注入了 DbContext.cs,代码如下:

  services.AddDbContext<DbContext.cs>();

我在我的 UnitOfWork.cs 中这样使用它:

public class UnitOfWork<Context> : IUnitOfWork where Context : DbContext
    {
        public DbContext _context { get; set; }

        public DbContext getContext()
        {
            return _context;
        }
        public UnitOfWork(DbContext context)
        {
            _context = context;
        }
}

这也是由依赖注入管理的。

我的问题是,是否有可能使用一个注入的dbcontext实例,并在需要时在运行时更改连接?我真的没有找到清晰的解决方案。我尝试使用setter和每次需要连接到新数据库时实例化一个新的dbContext,但这似乎并不美观:

public void SetContext(DbContext context)
        {
            _context = context;
        }
public DbContext _context { get; set; }
1个回答

1

是否可能使用一个注入的DbContext实例,并在需要时在运行时更改连接?

不可能。如果您的工作单元需要连接到多个数据库,则需要多个DbContext实例。


那么在运行时更改连接字符串并使用相同的 DbContext 连接到不同的数据库是不可能的吗? - Boubakr Echieb
不,每个数据库都需要使用单独的DbContext。 - David Browne - Microsoft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接