ActiveRecord之多数据库配置

由于最近的要做的项目周期时间是短了,因此把 ActiveRecord给用上了。

1.我们会发现,ActiveRecord 通过使用公用基类的方式来实现多个数据库连接配置的。只要继承自指定的基类,我们就可以使用不同的目标数据库。在配置文件中我们通过增加多个 Config Section,同时指定 Config Type 属性,就可以让 ActiveRecord 使用多数据库配置。Config Type 就是我们编写的基类,所有继承自该基类的类型都会使用该连接配置,而那些直接继承自 ActiveRecordBase 的类型还是使用缺省的连接配置。


2. 基类需要遵循一定的规则。

(1) 必须继承自 ActiveRecordBase。
(2) 必须是抽象类。
(3) 可以不添加 [ActiveRecord()] 特性。
(4) 必须初始化抽象基类。如 "ActiveRecordStarter.Initialize(source, typeof(Test1Base ));" ,如果使用 "ActiveRecordStarter.Initialize(Assembly.GetExecutingAssembly(), source);" 那么就给抽象基类添加 "[ActiveRecord()]" 即可。


   结果用着用着问题就来了。者碰上配置多数据库怎么办啊,后来网上也找了一些资料。

        老是报错:“Could not obtain type from name '{0}',项目的类名”,

       把源代码拿来研究研究,问题找到了:

        在 ActiveRecord 源码中,文件目录是这样的:/Castle/Castle-all/ActiveRecord/Castle.ActiveRecord/Framework/Config/XmlConfigurationSource.cs

        把文件打开,再这样给他一改改哈哈行啦。。

其中不同的数据库的访问方式跟网上说的都差不多。  因为使用的GetType()这玩意儿不行,不同程序集无法获取类型

必须指明一个程序集的名称

如下配置:

config.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=Test;UID=sa;Password=sa" />
    </config>

    <config type="ConsoleApplication1.CastleActiveRecord.Test1Base , Learn.CLZ">
        <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=Test1;UID=sa;Password=sa" />
    </config>

    <config type="ConsoleApplication1.CastleActiveRecord.Test2Base , Learn.CLZ">
        <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=Test2;UID=sa;Password=sa" />
    </config>
</activerecord>

其中Type中后面蓝色就是该要连接model所在的程序集,可以把该model放在本程序集中,就把该指向改为本项目的名称,也可以是一个dll封装,那么就改为dll的名称即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值