使用IBatisNet + Castle 开发DotNet软件
2007-01-04 13:15
363 查看
本文主要讲述我在项目中如何使用IBatisNet + Castle的结构来进行开发的。软件的主框架如下图:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<facilities>
<facility id="ibatis" type="Castle.Facilities.IBatisNetIntegration.IBatisNetFacility, Castle.Facilities.IBatisNetIntegration" >
<sqlMap id="sqlServerSqlMap" config="SqlMap.config" />
</facility>
<facility id="transaction" type="Castle.Facilities.AutomaticTransactionManagement.TransactionFacility, Castle.Facilities.AutomaticTransactionManagement" />
</facilities>
</configuration>
三、IOC的配置
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<components>
<component
id="insititution"
service="FES.Service.Interfaces.IInstitutionService, FES.Service"
type="FES.Service.InsititutionService, FES.Service" />
</components>
</configuration>
目前IOC的配置还可支持泛型,详细请参考:
福 娃 [Castle]Castle也范型
当这些配置文件都写好之后,我们还需将其加载到Castle容器当中,具体的代码可写在Global.asax文件。
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using Castle.Windsor;
using Castle.Core.Resource;
using Castle.Windsor.Configuration.Interpreters;
namespace FES.Web
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Reflection;
using System.Data;
using System.Configuration;
using Castle.Core;
using Castle.Windsor;
using Castle.Windsor.Configuration.Interpreters;
namespace FES.Component
五、从Castle容器中得到ISqlMapper的实例
本系统将IBatisNet交给Castle来管理,所以ISqlMapper的实例也必须从Castle容器中获取,这样Castle才能真正的管理IBatisNet。
首先我们需要一个得到容器实例的方法:
public static IWindsorContainer GetContainer()
public static ISqlMapper sqlMap = (ContainerAccessorUtil.GetContainer())["sqlServerSqlMap"] as ISqlMapper;
其中"sqlServerSqlMap"即是在我们配置IBatisNet Facility时指定的。
五、在Service层中使用事务处理
using System;
using System.Collections.Generic;
using System.Text;
using FES.Persistence;
using FES.Model;
using FES.Service.Interfaces;
using Castle.Services.Transaction;
using Castle.Facilities.IBatisNetIntegration;
namespace FES.Service
{
[Transactional]
[UsesAutomaticSessionCreation]
public class InsititutionService : IInstitutionService
{
IInstitutionService Members#region IInstitutionService Members
private InstitutionMapDao _institution;
public InsititutionService(InstitutionMapDao institution)
{
_institution = institution;
}
[Transaction(TransactionMode.Requires)]
public void NewDepartmentAndEmployee(Employee emp,int did)
{
_institution.NewEmployee(emp,did);
_institution.NewDepartment(null);
}
#endregion
}
}
写的很简单,希望高手指点。。。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<facilities>
<facility id="ibatis" type="Castle.Facilities.IBatisNetIntegration.IBatisNetFacility, Castle.Facilities.IBatisNetIntegration" >
<sqlMap id="sqlServerSqlMap" config="SqlMap.config" />
</facility>
<facility id="transaction" type="Castle.Facilities.AutomaticTransactionManagement.TransactionFacility, Castle.Facilities.AutomaticTransactionManagement" />
</facilities>
</configuration>
三、IOC的配置
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<components>
<component
id="insititution"
service="FES.Service.Interfaces.IInstitutionService, FES.Service"
type="FES.Service.InsititutionService, FES.Service" />
</components>
</configuration>
目前IOC的配置还可支持泛型,详细请参考:
福 娃 [Castle]Castle也范型
当这些配置文件都写好之后,我们还需将其加载到Castle容器当中,具体的代码可写在Global.asax文件。
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using Castle.Windsor;
using Castle.Core.Resource;
using Castle.Windsor.Configuration.Interpreters;
namespace FES.Web
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Reflection;
using System.Data;
using System.Configuration;
using Castle.Core;
using Castle.Windsor;
using Castle.Windsor.Configuration.Interpreters;
namespace FES.Component
五、从Castle容器中得到ISqlMapper的实例
本系统将IBatisNet交给Castle来管理,所以ISqlMapper的实例也必须从Castle容器中获取,这样Castle才能真正的管理IBatisNet。
首先我们需要一个得到容器实例的方法:
public static IWindsorContainer GetContainer()
public static ISqlMapper sqlMap = (ContainerAccessorUtil.GetContainer())["sqlServerSqlMap"] as ISqlMapper;
其中"sqlServerSqlMap"即是在我们配置IBatisNet Facility时指定的。
五、在Service层中使用事务处理
using System;
using System.Collections.Generic;
using System.Text;
using FES.Persistence;
using FES.Model;
using FES.Service.Interfaces;
using Castle.Services.Transaction;
using Castle.Facilities.IBatisNetIntegration;
namespace FES.Service
{
[Transactional]
[UsesAutomaticSessionCreation]
public class InsititutionService : IInstitutionService
{
IInstitutionService Members#region IInstitutionService Members
private InstitutionMapDao _institution;
public InsititutionService(InstitutionMapDao institution)
{
_institution = institution;
}
[Transaction(TransactionMode.Requires)]
public void NewDepartmentAndEmployee(Employee emp,int did)
{
_institution.NewEmployee(emp,did);
_institution.NewDepartment(null);
}
#endregion
}
}
写的很简单,希望高手指点。。。
相关文章推荐
- 使用IBatisNet + Castle 开发DotNet软件
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 4.0 最新发布版本 -下载使用说明
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 对象设计器使用帮助
- IBatisNet + Castle 开发相关文章
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 应用在线演示/例子
- Mono为使用.NET2.0框架开发的软件脱离.NET Framework独立运行
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 数据访问
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 实现业务
- 再论IBatisNet + Castle进行项目的开发
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 处理报表
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 报表系统集成说明
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 文章汇总及学习指南
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 智能部署与升级
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 实现插件
- 基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET - 插件运行容器
- 基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET - 插件接口IModule
- IBatisNet + Castle 开发相关文章
- IBatisNet+Castle构架开发指南
- 使用.net开发手机管理软件 (十) 短信部分——VB.NET解码PDU
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - ActiveXForm在线体验安全设置