• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

asp.net服务组件-自动事务处理

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

代码实现:

using System;
using System.Data.SqlClient;
using System.EnterpriseServices;
using System.Reflection;

namespace ComponentServiceModel
{
    [assembly: ApplicationName("ComponentTransaction")]
    [Transaction(TransactionOption.Required)]
    public class TransactionExample : ServicedComponent
    {
        public TransactionExample()
        {
            
        }

        [AutoComplete(true)]
        public bool WriteData(string commandText,string commandText1)
        {
            try
            {
                //do something in different database
                ContextUtil.SetComplete();
                return true;
            }
            catch
            {
                ContextUtil.SetAbort();
                return false;
            }
        }
    }
}

黑体标注的部分是类型需要的特殊属性.。其中,try...catch语句块不是必须的,可以在WriteData方法体中编写我们正常的代码并假设这些代码是不会有任何异常发生的,也就是说我们不需要手动调用ContextUtil.SetComplete()和ContextUtil.SetAbort();。就像下面代码:

        [AutoComplete(true)]
        public bool WriteData(string commandText,string commandText1)
        {
                //do something in different database
        }

在实际运行时,如果调用发生异常,WriteData会自动调用ContextUtil.SetAbort(),相反如果调用没有发生异常,WriteData就会自动调用ContextUtil.SetComplete()以完 成事务。

提示

       如果需要指定事务的超时时间,可 以下面代码标识一个类型

       [Transaction(TransactionOption.Required, Isolation=TransactionIsolationLevel.Serializable, Timeout=10)] 

在使用AutoComplete属性标记一个方法时,如果将AutoComplete指定为[AutoComplete(false)]或忽略该属性,则需要手动去管理事务,就像以下代码所示

 

    [AutoComplete(false)]
    public bool WriteData(string commandText, string commandText1)
    {
        try
        {
            //do something in different database
            ContextUtil.SetComplete();
            return true;
        }
        catch
        {
            ContextUtil.SetAbort();
            return false;
        }
    }

相关类型解释:

1、[Transaction(TransactionOption.Required)]

       属性Transaction用标识TransactionExample为一个事务性组件

2、[AutoComplete]

       属性AutoComplete用于标识方法WriteData如果正常返回,则事务自动提交(SetComplete),否则中止事务(SetAbort)。

       有关属性Transaction与AutoComplete的详细资料,参见MSDN:

       Transaction

       http://msdn2.microsoft.com/zh-cn/library/system.enterpriseservices.transactionattribute(VS.80).aspx

       AutoComplete

       http://msdn2.microsoft.com/zh-cn/library/system.enterpriseservices.autocompleteattribute(VS.80).aspx


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Asp.Net控件的客户端命名发布时间:2022-07-10
下一篇:
ASP.NETMVCRazor输出没有编码的HTML字符串发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap