我有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种方法冒犯了我的DRY。但是我不怎么写这种方法以供重用,因为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上下文在继承时会是什么样?