Доброе утро,
Я работал над одним собственным проектом, и я бы знал, если кто-то знает, могу ли я иметь несколько экземпляров одного и того же DBContext в моем приложении.
Iбудет иметь 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 разных баз данных.
Это первое сообщение, которое я когда-либо делал, извините, если написал что-то не так.
Оцените ваши ответы.