现在在DAL层有添加联系人、添加分组、添加分组关系等数据库操作
我想在BLL层使用事务保持操作完整,比如,导入联系人,那么就是调用添加联系人、添加分组、添加分组关系三个操作,只要其中一个操作出错,全部回滚,当然也有可能单单是增加分组操作,所以在BLL层来组合一些操作,请问这样可以实现吗?
我用using (TransactionScope ts = new TransactionScope())
{//选择一个或多个操作}
这样会出现这个错误:“该伙伴事务管理器已经禁止了它对远程/网络事务的支持。 (异常来自 HRESULT:0x8004D025)”不知道我的表述清不清楚。。
我想在BLL层使用事务保持操作完整,比如,导入联系人,那么就是调用添加联系人、添加分组、添加分组关系三个操作,只要其中一个操作出错,全部回滚,当然也有可能单单是增加分组操作,所以在BLL层来组合一些操作,请问这样可以实现吗?
我用using (TransactionScope ts = new TransactionScope())
{//选择一个或多个操作}
这样会出现这个错误:“该伙伴事务管理器已经禁止了它对远程/网络事务的支持。 (异常来自 HRESULT:0x8004D025)”不知道我的表述清不清楚。。
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()这样是?
DTC 设置问题, 参考
http://topic.csdn.net/t/20060119/14/4525479.html
而TransactionScope可以进行分布式事务的处理,你的问题应该是DTC服务没有处理好,你可以使用命令:MSDTC resetlog之后,再试一次。