说明:本系列文章参考自李会军先生的Castle 开发系列文章,然后记录自己在学习时遇到的一些问题,记录之。

主要内容

1、Castle配置学习

2、初始化配置

Castle配置学习

<?xml version="1.0"?>
<configuration>
<configSections>
<section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord"/>
</configSections>
<activerecord>
<config>
<add key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
<add key="dialect" value="NHibernate.Dialect.MsSql2008Dialect" />
<add key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle" />
<add key="connection.connection_string" value="Data Source=localhost;Initial Catalog=Study;User ID=sa;Password=******" />
</config>
</activerecord>
<system.web>
<compilation debug="true"/>
</system.web>
</configuration>

  此段配置适用于配置其NHibernate ADO.NET的。

  a、activerecord表明自定义节点,其类型(type)表明了ActiveRecord的实现程序集和命名空间。

  b、connection.driver_class,定制IDriver的类型,可以配置适用于不同类型数据库的驱动。

  c、connection.provider,配置连接驱动提供程序。

  d、dialect,用于配置NHibernate的方言环境,可以通过此配置使用数据库的某些特性。

  e、proxyfactory.factory_class,新版本Castle需要添加此配置,用来配置代理工厂的工厂类。

  f、connection.connection_string,用来配置数据连接字符串。

初始化配置

  1、通过配置文件

//获取web.config或者app.config中相应的配置信息
IConfigurationSource cfgSrc = System.Configuration.ConfigurationManager.GetSection("activerecord") as IConfigurationSource;
//初始化ActiveRecord
ActiveRecordStarter.Initialize(cfgSrc, typeof(User));

  2、通过硬编码

InPlaceConfigurationSource source = new InPlaceConfigurationSource();
Hashtable properties = new Hashtable();

properties.Add("connection.driver_class", "NHibernate.Driver.SqlClientDriver");
properties.Add("dialect", "NHibernate.Dialect.MsSql2000Dialect");
properties.Add("connection.provider", "NHibernate.Connection.DriverConnectionProvider");
properties.Add("proxyfactory.factory_class", "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle");
properties.Add("connection.connection_string", "Data Source=localhost;Initial Catalog=Study;User ID=sa;Password=******");

source.Add(typeof(ActiveRecordBase), properties);
ActiveRecordStarter.Initialize(source, typeof(ActiveRecordBase));

注意:

  1、对于不同类型的数据库我们只需更改dialect和connection.connection_string字节信息即可

  2、常用的dialect

MySQL

NHibernate.Dialect.MySQLDialect

Oracle (any version)

NHibernate.Dialect.OracleDialect

Oracle 9/10g

NHibernate.Dialect.Oracle9Dialect

Sybase

NHibernate.Dialect.SybaseDialect

Microsoft SQL Server 2000

NHibernate.Dialect.MsSql2000Dialect

再次说明:本系列文章参考自李会军先生的Castle 开发系列文章,然后记录自己在学习时遇到的一些问题,记录之。

04-13 16:30