C# 如何动态使用两个数据库连接以避免代码重复
我有两个数据库连接C# 如何动态使用两个数据库连接以避免代码重复,c#,sql-server,C#,Sql Server,我有两个数据库连接 private MyEntities1 db1; private MyEntities2 db2; var contextHolder = new Dictionary<string, DbContext>(); contextHolder["db1"] = new MyEntities1(); contextHolder["db2"] = new MyEntities2(); 这两个连接具有相同的表。它们都是通过使用现有数据库添加ADO.NET模板生成的 这
private MyEntities1 db1;
private MyEntities2 db2;
var contextHolder = new Dictionary<string, DbContext>();
contextHolder["db1"] = new MyEntities1();
contextHolder["db2"] = new MyEntities2();
这两个连接具有相同的表。它们都是通过使用现有数据库添加ADO.NET模板生成的
这两个MSSQL连接将从两个旧的MySQL数据库检索数据。这是一次迁移
if (isContext1)
{
var transactionContext = this.db1.Database.BeginTransaction();
this.db1.Database.ExecuteSqlCommand(setIdentityInsertOn);
this.db1.MyTable.AddRange(res);
this.db1.SaveChanges();
this.db1.Database.ExecuteSqlCommand(setIdentityInsertOff);
transactionContext.Commit();
}
else
{
var transactionContext = this.db2.Database.BeginTransaction();
this.db2.Database.ExecuteSqlCommand(setIdentityInsertOn);
this.db2.MyTable.AddRange(res);
this.db2.SaveChanges();
this.db2.Database.ExecuteSqlCommand(setIdentityInsertOff);
transactionContext.Commit();
}
其中setIdentityOn和Off为:
var database = (isContext1) ? "db1" : "db2";
var setIdentityInsertOn = string.Format("SET IDENTITY_INSERT [{0}].[dbo].[MyTable] ON", database);
现在,我有很多代码双重码。我试图通过创建一个包含两个连接的数组来解决这个问题
private MyEntities1 db1;
private MyEntities2 db2;
var contextHolder = new Dictionary<string, DbContext>();
contextHolder["db1"] = new MyEntities1();
contextHolder["db2"] = new MyEntities2();
我的问题:
如何避免那些if/else构造?我如何才能更“动态”地执行此操作。这可能吗
感谢您的时间和问候如果这两个模式具有相同的表,那么您为什么要创建两个单独的上下文类型呢?为什么不直接
myenties
并将连接字符串传递给构造函数呢?啊,好主意。我想那会有用的。非常感谢你。与此不同的是,假设模式不同,如何解决这个问题?如果模式不同,您不应该期望能够对它们执行相同的操作,因此您将无法使用公共类型。。。感觉这是一个完全不同的情况,这是有道理的。再次感谢你,这真的很有帮助!