Automatic Transaction Management Facility 使用

时间:2023-02-15 20:58:15

需要引用的程序集:

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



1、配置

Automatic Transaction Management Facility 使用WindsorContainer container  =   new  WindsorContainer(store);
Automatic Transaction Management Facility 使用container.AddFacility( 
" auto.transaction " new  TransactionFacility() );

 或

Automatic Transaction Management Facility 使用< facilities >
Automatic Transaction Management Facility 使用    
< facility  id ="transaction"  type ="Castle.Facilities.AutomaticTransactionManagement.TransactionFacility, Castle.Facilities.AutomaticTransactionManagement"   />
Automatic Transaction Management Facility 使用
Automatic Transaction Management Facility 使用
</ facilities >

2、在代码中使用自动的事务管理
Automatic Transaction Management Facility 使用using  System;
Automatic Transaction Management Facility 使用
using  System.Collections;
Automatic Transaction Management Facility 使用
using  System.Collections.Generic;
Automatic Transaction Management Facility 使用
using  System.Text;
Automatic Transaction Management Facility 使用
Automatic Transaction Management Facility 使用
using  FES.Persistence;
Automatic Transaction Management Facility 使用
using  FES.Domain.Common;
Automatic Transaction Management Facility 使用
using  FES.Service.Interface;
Automatic Transaction Management Facility 使用
Automatic Transaction Management Facility 使用
using  Castle.Facilities.IBatisNetIntegration;
Automatic Transaction Management Facility 使用
using  Castle.Services.Transaction;
Automatic Transaction Management Facility 使用
using  Castle.Facilities.AutomaticTransactionManagement;
Automatic Transaction Management Facility 使用
Automatic Transaction Management Facility 使用
namespace  FES.Service.Implement
Automatic Transaction Management Facility 使用Automatic Transaction Management Facility 使用
{
Automatic Transaction Management Facility 使用    [Transactional]
Automatic Transaction Management Facility 使用    [UsesAutomaticSessionCreation]
Automatic Transaction Management Facility 使用    
public class CommonService : ICommonService
Automatic Transaction Management Facility 使用Automatic Transaction Management Facility 使用    
{
Automatic Transaction Management Facility 使用        
private CommonSqlMapDao _common;
Automatic Transaction Management Facility 使用        
public CommonService(CommonSqlMapDao common)
Automatic Transaction Management Facility 使用Automatic Transaction Management Facility 使用        
{
Automatic Transaction Management Facility 使用            _common 
= common;
Automatic Transaction Management Facility 使用        }

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

Automatic Transaction Management Facility 使用            
else
Automatic Transaction Management Facility 使用Automatic Transaction Management Facility 使用            
{
Automatic Transaction Management Facility 使用                
return true;
Automatic Transaction Management Facility 使用            }

Automatic Transaction Management Facility 使用        }

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

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

Automatic Transaction Management Facility 使用        }

Automatic Transaction Management Facility 使用    }

Automatic Transaction Management Facility 使用}

Automatic Transaction Management Facility 使用

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

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

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