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>


 

posted on 2007-01-24 11:31 Daniel Pang 阅读(1248) 评论(6)  编辑 收藏 所属分类: CastleIBatisNet

评论

#1楼  2007-06-12 20:19 Michael [未注册用户]

“Castle.Facilities.AutomaticTransactionManagement.TransactionComponentInspector”的方法“ProcessModel”没有实现 怎么会出现这个异常呢?   回复  引用    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接:
 


<2007年1月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

公告

技术交流平台,真诚的希望能和园子里的朋友交流技术,共同进步!
欢迎加入Castle+IBatisNet交流群:2923364(已满),37745404
特别提示:本站文章若无特别申明,均为原创,转载请注明出自'博客园'!
Emailpwei013#163.com
MSNshypw520#gmail.com

与我联系

搜索

 

常用链接

留言簿(10)

我参与的团队

随笔分类(98)

随笔档案(74)

相册

收藏夹(19)

MY BLOG

公司主页

情侣BLOG

友情链接

积分与排名

最新随笔

最新评论

阅读排行榜

评论排行榜