У меня есть 4 разные базы данных SQL, которые содержат похожие данные все они основаны на одной модели. Они различаются в зависимости от версии данных, где они используются и т. Д.
Db1Context
Db2Context
Db3Context
Db4Context
После инициализации мне нужно убедиться, что каждая из баз данных имеет одну родительскую запись, поэтому я запускаю метод, который выглядит примерно так:
Sub EnsureATableExists()
Dim theDb = New Db1Context
Dim parentTable = theDb.parentTables.Where(Function(x) x.somedata = "somedata").FirstOrDefault()
If parentTable Is Nothing Then
parentTable = CreateTable()
theDb.parentTables.Add(parentTable)
theDb.SaveChanges()
End If
End Sub
Но в настоящее время у меня есть 4 из этих методов, которые оскорбляют мое ощущение СУХОГО. Но я не пишу этот метод для повторного использования, потому что объявление DbContext уникально, и я не могу параметризовать DbContext для передачи.
Я предполагаю, что есть некоторый общий метод для кодирования этого, и был бы признателен за обучение.
Дополнительный код добавлен в комментарий ниже:
Это мой текущий контекст. Повторяется еще 3 раза с разными именами, как указано выше, и соответствующими строками соединения.
Я преобразовал свой vb.net в C # и думаю, что смогу преобразовать любые примеры обратно в vb.net.
public class Db1Context : DbContext
{
public Db1Context() : base("Db1Connection")
{
}
public Db1Context (string connectionString) : base(connectionString)
{
}
public DbSet<Table1> Table1s { get; set; }
public DbSet<Table2> Table2s { get; set; }
}
Как определить класс, который должен быть унаследован, где я могу определить новую строку подключения, и как будут выглядеть новые контексты Db1-Db4 при наследовании?