现在在DAL层有添加联系人、添加分组、添加分组关系等数据库操作
我想在BLL层使用事务保持操作完整,比如,导入联系人,那么就是调用添加联系人、添加分组、添加分组关系三个操作,只要其中一个操作出错,全部回滚,当然也有可能单单是增加分组操作,所以在BLL层来组合一些操作,请问这样可以实现吗?
我用using (TransactionScope ts = new TransactionScope())
{//选择一个或多个操作}
这样会出现这个错误:“该伙伴事务管理器已经禁止了它对远程/网络事务的支持。 (异常来自 HRESULT:0x8004D025)”不知道我的表述清不清楚。。

解决方案 »

  1.   


    SqlConnection myConnection = new SqlConnection("Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;");
    myConnection.Open();// Start a local transaction.
    SqlTransaction myTrans = myConnection.BeginTransaction();// Enlist the command in the current transaction.
    SqlCommand myCommand = myConnection.CreateCommand();
    myCommand.Transaction = myTrans;try
    {
    myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
    myCommand.ExecuteNonQuery();
    myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
    myCommand.ExecuteNonQuery();
    myTrans.Commit();
    Console.WriteLine("Both records are written to database.");
    }
    catch(Exception e)
    {
    try
    {
        myTrans.Rollback();
    }
    TransactionScope ts = new TransactionScope()这样是?
      

  2.   


    DTC 设置问题, 参考

    http://topic.csdn.net/t/20060119/14/4525479.html
      

  3.   

    使用SqlTransaction只能进行本地事务处理,即处理同一个连接的事务。
    而TransactionScope可以进行分布式事务的处理,你的问题应该是DTC服务没有处理好,你可以使用命令:MSDTC resetlog之后,再试一次。