[ActiveRecord] 之一:初始化和配置

有关Castle.ActiveRecord的介绍文章已经有不少了,本文不做详述。

配置文件

个人认为使用一个独立的配置文件可能更好点,App.config / Web.config 已经被塞入很多的内容了。

ActiveRecord.xml 

 

代码
<?xml version="1.0" encoding="utf-8" ?>
<activerecord>
<config>
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
<add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2000Dialect" />
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="hibernate.connection.connection_string" value="Data Source=localhost;Initial Catalog=a;UID=sa;Password=" />
</config>
</activerecord>

 

初始化代码

 

代码
// 获取数据库连接配置
XmlConfigurationSource source = new XmlConfigurationSource(@"Config\ActiveRecord.xml");

// 载入程序集中所有 ActiveRecord 类。
ActiveRecordStarter.Initialize(Assembly.GetExecutingAssembly(), source);

// 删除数据库架构
//ActiveRecordStarter.DropSchema();

// 创建数据库架构 (该方法会删除同名表后再创建,没有必要在此之前调用 DropSchema() 方法。)
//ActiveRecordStarter.CreateSchema();


网上的例子大多使用 "ActiveRecordStarter.Initialize(source, typeof(User));" 这样的方式一个一个载入目标类型,大可不必。

 

如果要在App.config / Web.config 中做配置:

配置文件

代码
...
<configSections>
  <section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord"/>
</configSections>
<activerecord isWeb="true">
<config>
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
   
<add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2000Dialect" />
   
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
   
<add key="hibernate.connection.connection_string" value="Data Source=localhost;Initial Catalog=a;UID=sa;Password=" />
</config>
</activerecord>
...

 

Global.asax文件中初始化:

 

代码
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Castle.ActiveRecord.Framework.IConfigurationSource source = System.Configuration.ConfigurationManager.GetSection("activerecord") as Castle.ActiveRecord.Framework.IConfigurationSource;
Castle.ActiveRecord.ActiveRecordStarter.Initialize(System.Reflection.Assembly.Load(
"LibName"), source);
}

 
-----------------

附:本文所有演示代码使用 2006-01-01 发布的 Castle ActiveRecord Beta3 版本。
Castle ActiveRecord 在发布 1.0 版本前可能有很多较大的变化,如演示代码无法编译,建议您参考最新版本的相关文档。

posted @ 2009-12-24 23:37  Lex  阅读(361)  评论(0)    收藏  举报