#.net #.net-core #entity-framework-core #asp.net-core-webapi
#.net #.net-ядро #entity-framework-core #asp.net-core-webapi
Вопрос:
В моем проекте я имею дело с двумя базами данных (SQL и Oracle) в ядре entity framework. Я хочу создать контекст SQL и Oracle на основе значения конфигурации в appsettings.json. Структура таблиц SQL и Oracle DB одинакова.
Я хочу знать, есть ли какой-либо способ добиться этого. Ниже приведен мой пример кода.
public class UserRepository: IUserRepository
{
private readonly SQLDBContext _context;
private readonly OraDbContext _contextOracle;
private readonly IConfiguration _config;
private readonly bool _dbSelect;
public UserRepository(SQLDBContext context, IConfiguration config, OraDbContext contextOracle, DbContext contexts)
{
_context = context;
_config = config;
_contextOracle = contextOracle;
_dbSelect = Convert.ToBoolean(config.GetSection("DbType").GetSection("SQLDbConfigured").Value);
}
}
Ответ №1:
Насколько я знаю, dbcontext регистрируется как служба в классе startup.cs при запуске приложения.
Вы имеете в виду, что хотите зарегистрировать dbcontext в соответствии со значением appsettings.json?
Если это ваше требование, я предлагаю вам попробовать добавить приведенные ниже коды в метод startup.cs ConfigureServices:
//Check use which database
if (Convert.ToBoolean(Configuration.GetSection("DbType").GetSection("SQLDbConfigured").Value))
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
}
else
{
//code which used the Oracle
}