zoukankan      html  css  js  c++  java
  • Automatic Transaction Management Facility 使用

    需要引用的程序集:

    • Castle.Facilities.AutomaticTransactionManagement
    • Castle.Services.Transactions
    • Castle.DynamicProxy
    • Castle.Core



    1、配置

    WindsorContainer container = new WindsorContainer(store);
    container.AddFacility( 
    "auto.transaction"new TransactionFacility() );

     或

    <facilities>
        
    <facility id="transaction" type="Castle.Facilities.AutomaticTransactionManagement.TransactionFacility, Castle.Facilities.AutomaticTransactionManagement" />

    </facilities>

    2、在代码中使用自动的事务管理
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Text;

    using FES.Persistence;
    using FES.Domain.Common;
    using FES.Service.Interface;

    using Castle.Facilities.IBatisNetIntegration;
    using Castle.Services.Transaction;
    using Castle.Facilities.AutomaticTransactionManagement;

    namespace FES.Service.Implement
    {
        [Transactional]
        [UsesAutomaticSessionCreation]
        
    public class CommonService : ICommonService
        
    {
            
    private CommonSqlMapDao _common;
            
    public CommonService(CommonSqlMapDao common)
            
    {
                _common 
    = common;
            }


            [Transaction(TransactionMode.Requires)]
            
    public bool LogIn(string empcode, string password, ref Employees emp)
            
    {
                emp 
    = _common.GetEmployeeDetailByPassword(empcode, password);
                
    if (emp == null)
                
    {
                    
    return false;
                }

                
    else
                
    {
                    
    return true;
                }

            }



            [Transaction(TransactionMode.Requires)]
            
    public void InsertEmpPages(EmpPages pages)
            
    {
                _common.DeleteEmpPages(pages.Eid);
                _common.AddEmpPages(pages);
            }


            [Transaction(TransactionMode.Requires)]
            
    public void InsertEmpPages(ArrayList al,int eid)
            
    {
                _common.DeleteEmpPages(eid);
                
    for (int i = 0; i < al.Count; i++)
                
    {
                    EmpPages pages 
    = (EmpPages)al[i];
                    _common.AddEmpPages(pages);
                }

            }

        }

    }

    注意:如果你在容器注册使用自动事务管理的组件不是以一个接口来注册的,那么在需要自动事务管理的方法必须声明为:virtual。

    还可以在容器注册组件的配置文件中来使用自动的事务管理:

    <configuration>

      
    <components>
        
    <component
                
    id="common"
                service
    ="FES.Service.Interface.ICommonService, FES.Service"
                type
    ="FES.Service.Implement.CommonService, FES.Service" isTransactional="true">
          
    <transaction>
            
    <method name="LogIn" />
            
    <method name="InsertEmpPages" />
          
    </transaction>
        
    </component>
      
    </components>
      
    </configuration>


     

  • 相关阅读:
    [ jquery 选择器 总览 ] jquery选择器总览
    [ jquery 选择器 :empty ] 此方法选取所有不包含子元素或者文本的空元素
    [ jquery 选择器 :contains(text) ] 此方法选取包含给定文本的元素
    [ jquery 选择器 :header ] 此方法选取匹配如 h1, h2, h3之类的标题元素
    [ jquery 选择器 :last ] 此方法选取jquery对象中的最后一个对象
    [ jquery 选择器 :gt(index) ] 此方法选取匹配大于指定索引值的所有元素
    [ jquery 选择器 :lt(index) ] 此方法选取匹配小于指定索引值的所有元素
    [ jquery 选择器 :eq(index) ] 此方法精确选取指定jquery对象中的指定下角标的对象
    剑指Offer 35 复杂链表的复制 && LeetCode 138 复制带随机指针的链表 哈希
    LeetCode 102. 二叉树的层序遍历 && 剑指 Offer 32
  • 原文地址:https://www.cnblogs.com/pw/p/628866.html
Copyright © 2011-2022 走看看