2011-02-03 3 views
0

캐슬 액티브 레코드/NHibernate에서 두 데이터베이스에 참여하는 방법이 있습니까?액티브 레코드의 데이터베이스에 합류하기

나는 서로 조인하고 하나의 쿼리 결과 집합으로 반환해야하는 별도의 데이터베이스에 2 개의 테이블에 데이터를 가지고 있습니다. OO 방법이 없다면 hql 또는 최악의 경우를 사용하여 수행 할 수 있습니까? 동적 SQL을 실행하고 데이터 테이블과 같은 일종의 콜렉션을 반환하는 표준 방법이 있습니까?

+0

데이터베이스가 동일한 서버에 있습니까? –

+0

@David Kemp - 네, 그들은 같은 서버에 있습니다. – Justin

+0

어떤 DBMS입니까? –

답변

1

두 테이블이 이미 매핑되어 있지만 별도의 세션 팩토리에있는 경우에는 그다지 많은 작업을 수행 할 수 있다고 생각하지 않습니다. 자신의 코드에 "가입"해야합니다.

그런 경우가 아니라면, 당신은 : 즉, 데이터베이스보기를 통해

create view othertable as select * from otherdatabase..othertable 

를 외국 테이블을 매핑 할 수 있으며 로컬 테이블 것처럼 액티브에서이지도보기.

+0

보기, 좋은 생각을 만드는 것을 끝내었다. – Justin

0

이미지도 클래스를 데이터베이스로 사용해 보셨습니까? 귀하의 액티브 레코드 시작 설정에서

<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

소스 코드를 포맷하십시오. –