数据库事务使用实体框架

时间:2014-09-09 10:36:42

标签: c# entity-framework transactions

我想在两个不同的数据库中使用实体框架实现数据库事务。如果在第二个数据库中的事务期间发生任何异常,则更改应从所有数据库回滚。如果第二个数据库中没有发生任何异常,则更改应保存在数据库中。为此,我写了下面的代码。即使所有提供的输入都是正确的,它应该成功保存更改但我在此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);
            }
        }
    }

0 个答案:

没有答案