我想在两个不同的数据库中使用实体框架实现数据库事务。如果在第二个数据库中的事务期间发生任何异常,则更改应从所有数据库回滚。如果第二个数据库中没有发生任何异常,则更改应保存在数据库中。为此,我写了下面的代码。即使所有提供的输入都是正确的,它应该成功保存更改但我在此b3.SaveChanges();
行中得到例外。异常消息是
"基础提供商在Open"
上失败了
如何实现这一个?
public static void InsertIntoDb()
{
using (TransactionScope trans = new TransactionScope())
{
try
{
using (DB1Entities db1 = new DB1Entities())
{
Employee emp = new Employee();
emp.DeptId = 102;
emp.DOB = Convert.ToDateTime("10/10/1989");
emp.gender = "Male";
emp.EmpID = 211;
emp.name = "XYZ";
db1.Employees.Add(emp);
db1.SaveChanges();
using (DB3Entities db3 = new DB3Entities())
{
Department dept = new Department();
dept.DeptName = "ABC";
dept.DeptId = 680;
db3.Departments.Add(dept);
db3.SaveChanges();
}
}
trans.Complete();
}
catch (Exception Ex)
{
trans.Dispose();
Console.WriteLine(Ex.Message);
}
}
}