2011-01-28 13 views
1

私はメインデータベース(グローバルなものがあります)とファイル(基本的にはsqliteファイル)があるところのプロジェクトを作成しています。Castle ActiveRecord使用中のデータベース

ユーザーが「開く」をクリックして新しいファイルを選択すると、アプリケーションがこの新しいデータベースを読み込むようにすることをお勧めします。最初、パスワードはxmlファイルにクリアされ、これはグローバルなもののために[OK]をすることもできるが、それはファイルのための非常に良いではありません。

は、実は私がしかし、2つの問題がある2つのコンフィギュレーションファイル http://www.darkside.co.za/archive/2008/01/21/castle-activerecord-connecting-to-multiple-databases.aspx

で動作するように管理しました(私はまだこれが本当の問題かどうかわからない、彼らは彼らのファイルのパスワードが必要かどうか尋ねなければならない)。

otheroneは、接続文字列は、各ファイルごとに異なるだろうということである(はい、私はパスを変更する必要があります!)ので、私は2通りの方法で作業することができます:

  • デシベルのローカルコピーを作成したときにユーザーを押して「保存」、データベースが古い1
  • の上にコピーされますが、私は前方DifferentDatabaseScopeを見て、私よ

「ランタイム上で」を接続文字列を変更したり、設定をロードする方法を見つけます理解していない:私はすべてのNHibernate設定を指定するもし私がこれを使うなら? (接続オブジェクトのみを渡す必要があります!!!)

答えて

0

城のactiverecord startを除いて使用中のデータベースを直接変更する方法はありません。これは私が見つけたものです。

0

ザ・NHibernateの構成は、あなたが

DifferentDatabaseScopeを使用して使用してDifferentDatabaseScope

でレコードを取得するために使用するだけで、コードをラップし、クエリを実行するために同じActiveRecordのクラスを使用し、同じになります使用する別のオプションは、DifferentDatabaseScopeクラスです。このクラスはコンストラクタ内のIDbConnectionオブジェクトを取得し、このデータベース接続を使用してデータを取得しようとします。

現在(RC3ビルドで)、これは弾丸ではないことに注意してください。私は彼らがコメントの "まだ"を中止したと確信しています。

コードでこれを行うの例は次のとおりです。

IDbConnection connection = new SqlConnection("Data Source=.;Initial Catalog=TestB;Integrated Security=SSPI"); 

connection.Open(); 

using (new DifferentDatabaseScope(connection)) 

{ 

    TestTableDatabaseA test3 = TestTableDatabaseA.Find(1); 

    Console.WriteLine(test3.Title); 

} 
関連する問題