早上好
我一直在自己的一个项目中工作,我想知道是否有人知道我的应用程序中是否可以有同一个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个不同数据库的数据。
这是我写过的第一篇文章,对不起,我写错了东西。
欣赏您的答案。
答案 0 :(得分:0)
好吧,如果您的目标是拥有两个数据库,那么您要做的就是在两个连接字符串中指定不同的数据库名称。
但是,如果要点是按用户分开数据,那么我想说,将用户名存储在表的关键字段中要好得多。