C#之旅

           走自己的路,让别人打的去吧。
随笔 - 66, 文章 - 0, 评论 - 117, 引用 - 2
数据加载中……

2006年5月24日

关于上次说的强类型dataset中事务问题的解决办法,也实用于一般的事务解决方案

TransactionScope 类提供一个简单方法,通过这一方法,您不必与事务本身交互,即可将代码块标记为参与某个事务。事务范围可以自动选择和管理环境事务。由于它易于使用并且效率很高,因此建议您在开发事务应用程序时使用 TransactionScope 类。

此外,您不必显式向事务登记资源。任何 System.Transactions 资源管理器(例如 SQL Server 2005)都可以检测到该范围创建的环境事务的存在并自动登记。
在使用前,应该保证MSDTC(分布式事务协调处理器)服务是启动的:
如下图:



因此,在做强类型设计的时候,你可以这样来写代码:
步骤如下:

1 在项目引用中加入(.net2.0)System.Transactions
2 在头部加入using System.Transactions;
3 加入以下代码片段:

 using (System.Transactions.TransactionScope updateTransaction =new System.Transactions.TransactionScope())
            
{
                ta.InsertName(
"1456789""456""456");
                ta1.InsertName1(
"1456145614561456""456""456");

                updateTransaction.Complete();
              
            }


注意:此命名空间在 .NET Framework 2.0 版中是新增的。

 

Note特别注意的事项:

只能在 Windows 2000、Windows XP 和 Windows 2003 平台上使用此命名空间创建应用程序。在 Windows 98 和 Windows ME 平台上创建事务会引发 PlatformNotSupportedException

posted @ 2006-05-24 22:38 c#之旅 阅读(920) | 评论 (1)编辑

高手请进,一个强类型数据集的典型问题,困惑我好久了

我使用vs2005自动产生了强类型数据集,有两个表,一个表是Order,一个表是OrderDetail,自动产生后,产生了 OrderDataTable和OrderDetailDataTable,同时,也自动生成了两个相对应的OrderTableAdpter和OrderDetailTableAdpter.我在程序中应用的时候,对两个表分别进行了相应的修改,当然,是使用两个不同的TableAdpter来进行的操作,我想把这些操作放到一个事务里边,即实现下面的效果

事务开始
OrderTableAdpter.Update(OrderDataTable);
OrderDetailTableAdpter.Update(OrderDetailDataTable)
事务提交
有问题了,事务回滚,就是把上面的两条语句中的更新都回滚回去。

可一直没有找到什么解决方法,请各位高手大哥们给予帮助。。。
太感谢了。

posted @ 2006-05-24 19:43 c#之旅 阅读(1094) | 评论 (5)编辑