ActiveRecord使用多数据库

AR原始文档

Accessing more than one database

» Home » ActiveRecord » Documentation » ActiveRecord RC1 Documentation » Advanced usage » Accessing more than one database

You can use more than one database with ActiveRecord. In order to do so you must create base classes that define, based on the hierarchy, which database is being used. Those are called Root types. If you use just one database, the root type is ActiveRecordBase.

Adding a different database

Let's analyze the steps involved in getting ActiveRecord to work with more than one database.

First: Create your root type

You must create an abstract class that extends ActiveRecordBase. This class can be empty. All ActiveRecord types bound to the second database must use it as the base class.

 

using Castle.ActiveRecord

 

public abstract class LogisticDatabase : ActiveRecordBase

{

}

Second: configure the second database

On the existing configuration, you must use add another config set bound to the abstract class you have just created. For more information on it, see Xml Configuration Reference.

Xml Configuration Reference

» Home » ActiveRecord » Documentation » ActiveRecord RC1 Documentation » Reference Manual » Xml Configuration Reference

The following is the definition of the expected xml schema. Differences regarding the how it must appear in a standalone xml file or in a configuration associated with an AppDomain (web.config for instance) are also explained below.

 

<configuration>

 

<activerecord

isWeb="true|false"

isDebug="true|false"

threadinfotype="custom thread info implementation"

sessionfactoryholdertype="custom session holder implementation"

namingstrategytype="custom namingstrategy implementation">

 

<config>

<add key="hibernate.connection.driver_class" value="NHibernate Driver" />

<add key="hibernate.dialect" value="NHibernate Dialect" />

<add key="hibernate.connection.provider" value="NHibernate Connection Provider" />

<add key="hibernate.connection.connection_string" value="connection string" />

</config>

 

<config type="Full Type name to Abstract Class that defines boundaries for different database">

<add key="hibernate.connection.driver_class" value="NHibernate Driver" />

<add key="hibernate.dialect" value="NHibernate Dialect" />

<add key="hibernate.connection.provider" value="NHibernate Connection Provider" />

<add key="hibernate.connection.connection_string" value="connection string" />

</config>

 

</activerecord>

 

</configuration>

The following table explains the attributes.

翻译:

  1. 新建一个abstract继承自ActiveRecordBase
  2.  

    假设新建的类为

 

using Castle.ActiveRecord

 

public abstract class LogisticDatabase : ActiveRecordBase

{

}

则新增的定义为

<config type=" LogisticDatabase ">

<add key="hibernate.connection.driver_class" value="NHibernate Driver" />

<add key="hibernate.dialect" value="NHibernate Dialect" />

<add key="hibernate.connection.provider" value="NHibernate Connection Provider" />

<add key="hibernate.connection.connection_string" value="connection string" />

</config>

让所以用到第二个数据库的domain都继承自此类。

 

原文地址:https://www.cnblogs.com/shiningrise/p/876463.html