繁体   English   中英

同一DBContext的多个实例

[英]Multiple instances of same DBContext

早上好,

我一直在自己的一个项目中工作,我想知道是否有人知道我的应用程序中是否可以有同一DBContext的多个实例。

我将有2个这样的数据库实例在Startup.cs中连接:

services.AddDbContext<MyApplicationDBContext>(options => options.UseSqlServer(_config.GetConnectionString("StringConnection1")));
services.AddDbContext<MyApplicationDBContext>(options => options.UseSqlServer(_config.GetConnectionString("StringConnection2")));

services.AddScoped<IAppRepository, AppRepository>();

这就是我构建MyApplicationDbContext的方式

public partial class MyApplicationDBContext : IdentityDbContext<AppUsers>
{
    public virtual DbSet<Book> Books{ get; set; }
    public virtual DbSet<Film> Films{ get; set; }

    public MyApplicationDBContext(DbContextOptions<MyApplicationDBContext> options) : base(options)
    {

    }
}

最后,我想在我的存储库中添加以下内容:

public class AppRepository: IAppRepository
{
    private IConfigurationRoot _config;
    private MyApplicationDBContext _cntx;
    private MyApplicationDBContext _cntx2;
    private UserManager<AppUsers> _userManager;

    public AppRepository(MyApplicationDbContext cntx, MyApplicationDbContext cntx2, IConfigurationRoot config, UserManager<AppUsers> userManager)
    {
        _cntx = cntx;
        _cntx2 = cntx2;
        _config = config;
        _userManager = userManager;
    }

    public async Task<IEnumerable<Book>> GetBookByDatabase(string book, int database)
    {
        if(database == 1)
           return _cntx.GetBook(book);
        if(database == 2)
           return _cntx2.GetBook(book);
        else
           return null;
    }
}

该代码的主要目的是拥有一个应用程序实例,该实例可以插入和查询来自2个不同数据库的数据。

这是我写过的第一篇文章,如果我写错了东西,对不起。

感谢您的回答。

好吧,如果您的目标是拥有两个数据库,那么您要做的就是在两个连接字符串中指定不同的数据库名称。

但是,如果要按用户分开数据,那么我想说,将用户名存储在表的关键字段中要好得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM