[英]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.