2011-02-03 9 views
0

Castle Active Record/NHibernateに2つのデータベースを結合する方法はありますか?アクティブレコードのデータベース間での結合

私は一緒に参加して1つのクエリ結果セットに戻る必要がある別々のデータベースに2つのテーブルのデータを持っています。それを行うOO方法がない場合、それはhqlまたは最悪の場合のどちらかを使用して行うことができますか?ダイナミックSQLを実行し、データテーブルなどの何らかのコレクションを戻す標準的な方法はありますか?

+0

データベースは同じサーバーにありますか? –

+0

@David Kemp - はい、同じサーバーにあります。 – Justin

+0

どのようなDBMSですか? –

答えて

1

すでにマッピングされている2つのテーブルがありますが、別々のセッションファクトリであれば、私はそれについて多くのことを行うことはできません。自分のコードに "参加"する必要があります。

付属していない場合、あなたはすなわち、データベースのビューを介して外部テーブルをマッピングすることができます。:

create view othertable as select * from otherdatabase..othertable 

、それがローカル・テーブルであるかのようにActiveRecordの中で、このビューをマップします。

+0

ビューを作成して終了しました。 – Justin

0

既にマップクラスをデータベースで試しましたか?あなたのActiveRecordスタートアップ設定で

<config database="MsSqlServer2005" type="BaseClassDatabaseOne, MyAssembly"> 
</config> 
<config database="MsSqlServer2005" type="BaseClassDatabaseTwo, MyAssembly"> 
</config> 

abstract class BaseClassDatabaseOne {} 
abstract class BaseClassDatabaseTwo {} 

[ActiveRecord] 
class MyClassModelTwo: BaseClassDatabaseTwo 
{ 
    [PrimaryKey(PrimaryKeyType.Native)] 
    public virtual Byte Id { get; set; } 
} 

class MyClassModel: BaseClassDatabaseOne 
{ 
    [PrimaryKey(PrimaryKeyType.Native)] 
    public virtual Byte Id { get; set; } 

    [BelongsTo("Id")] 
    public virtual MyClassModelTwo Two { get; set; } 
} 

私はこの助けを願っています。

+0

ソースコードをフォーマットしてください –

関連する問題