Я еще не использовал EntityFramework для базы данных Oracle, но он должен быть похож на соединение с SQL Server, так как имя базы данных указывается через ConnectionString.В вашем проекте должен быть файл конфигурации (web.config, app.config или, если это приложение .NET Core, это может быть файл appsettings.json) с этой строкой ConnectionString.
Например:
<add name="YourConnectionString" providerName="YourOracleProviderName" connectionString="User Id=test;Password=testpassword;Data Source=eftest" />
Базовый конструктор DbContext принимает строковый аргумент, который указывает, какую ConnectionString он должен использовать и, следовательно, к какой базе данных подключаться.Если вы заглянете в свой класс контекста, конструктор по умолчанию должен вызвать базовый конструктор с этим аргументом.
public YourDbContext() : base("YourConnectionString") {}
Чтобы сохранить в нескольких базах данных, вам нужно будет работать с разными экземплярами DbContext, каждый с разнымиАргумент ConnectionString.Итак, ваша конфигурация должна будет перечислить несколько разных строк подключения для каждого Db, и вы, вероятно, захотите, чтобы ваш класс DbContext также разрешил аргумент в своем конструкторе.
Возможно, реализация метода SaveChanges могла бы создать экземпляр другогоDbContexts вам нужно использовать:
public void SaveChanges(int auditPersonNumber)
{
using (var context = new Context("OtherConnectionString1"))
{
// apply same changes
context.SaveChanges();
}
using (var context = new Context("OtherConnectionString2"))
{
// apply same changes
context.SaveChanges();
}
base.SaveChanges();
}
Что касается применения тех же самых изменений, я ожидаю, что вы можете прочитать их из DbContext ChangeTracker.Здесь есть объяснение того, как использовать EF Core, но в более ранних версиях оно аналогично: http://www.entityframeworktutorial.net/efcore/changetracker-in-ef-core.aspx
Также имейте в виду, что вызов SaveChanges для OtherConnectionString1 может быть успешным, в то время как другие могут не работать, поэтому данные могут быть несовместимыми в вашем файле.разные базы данных.Возможно, вам придется изучить использование транзакций в нескольких базах данных, но я сам этого еще не сделал.