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.
翻译:
- 新建一个abstract类继承自ActiveRecordBase
-
新增一个 activerecord的config
假设新建的类为
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都继承自此类。