2011-02-01 15 views
1

私は城アクティブレコードに複数のデータベースに接続しようとしている私の設定ファイルは、次のようになります(NHibernateはを使用しています。):アクティブレコードに複数のデータベースへの接続

<configSections> 
    <section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord" /> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 

    <activerecord> 
    <config type="Navtrak.Business.Schemas.CommonSchemas.Models.NavtrakOperations.NavtrakOperationsDatabase`1, CommonSchemas"> 
     <add key="hibernate.connection.connection_string" value="myconnstring" /> 
     <add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" /> 
     <add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2005Dialect" /> 
     <add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" /> 
    </config> 
    <config type="Navtrak.Business.Schemas.CommonSchemas.Models.Errors.ErrorsDatabase`1, CommonSchemas"> 
     <add key="hibernate.connection.connection_string" value="Data Source=myconnstring" /> 
     <add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" /> 
     <add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2005Dialect" /> 
     <add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" /> 
    </config> 
    </activerecord> 

そして、私は基本抽象を持っていますこのような各データベースのクラス:

public abstract class NavtrakOperationsDatabase<T> : ActiveRecordBase<T> 
    { 

    } 

そして、各クラスはこれを継承します。私は、このようにアクティブなレコードを初期化しています:

ActiveRecordStarter.Initialize(typeof(SimpleModel).Assembly, ActiveRecordSectionHandler.Instance); 

私にエラーを与える:私はこれにアクティベーションコードを変更した場合

は、コンフィギュレーションに

を方言を見つけることができませんでした:

ActiveRecordStarter.Initialize(
        ActiveRecordSectionHandler.Instance, 
        typeof(NavtrakOperationsDatabase<>), 
        typeof(ErrorsDatabase<>) 
       ); 

は、その後、私は次のエラーを取得します

正しく初期化されていないActiveRecordクラスにアクセスしました。 ActiveRecordStarter.Initialize()の呼び出しにNavtrak.Business.Schemas.CommonSchemas.Models.NavtrakOperations.Applicationクラスが含まれていないか、Navtrak.Business.Schemas.CommonSchemas.Models.NavtrakOperations.Applicationクラスが含まれていない[ActiveRecord]属性で装飾されていません。

明らかに、すべての単一のクラスを初期化関数に含めたくありません。

アイデア?

+0

どのバージョンのactiverecordを使用していますか? –

+0

@Mauricio Scheffer - 私は1週間ほど前にダウンロードしたので、最新のDLLを.NET 4用に使用しています(私は思っています)。 – Justin

+0

@Justin - 使用したすべてのものの最終的な構文を表示するように更新できますか?私は同じことをしようとしていますが、あなたが説明したエラーを過ぎ去ることはできません。 – Rake36

答えて

0

「休止状態」を削除します。すべての設定キーの接頭辞。その接頭辞は、私の場合はNHibernateの1.xの中

+0

ありがとう、それは私がサイトからコピー/ペーストするために得るものです... – Justin

1

を使用した - と同じような状況だった - 私はInitializeARメソッドにこれを追加しました:

LoggerProvider.SetLoggersFactory(new NoLoggingLoggerFactory()); 

それはこのように終わった:

lock (typeof(SessionManager)) 
{ 
    if (!initialized) 
    { 
     LoggerProvider.SetLoggersFactory(new NoLoggingLoggerFactory());     
     System.Reflection.Assembly bin = typeof(SimpleModel).Assembly; 
     IConfigurationSource s = (IConfigurationSource)ConfigurationManager.GetSection("activerecord"); 
     ActiveRecordStarter.Initialize(bin, s); 

    } 
    initialized = true; 
} 
関連する問題