[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 版本前可能有很多较大的变化,如演示代码无法编译,建议您参考最新版本的相关文档。


浙公网安备 33010602011771号