2009-08-26 5 views
1

나는 (Hibernate를 사용하는) S # arp Architecture를 사용하고 있습니다. 하나의 데이터베이스에는 테이블에 매핑 된 엔티티가 있고 다른 엔티티에는 다른 데이터베이스에 매핑 된 엔티티가 있습니다. 공개 : 데이터베이스가 이미 있으므로 모델을 먼저 수행 할 수 없습니다.S # arp 다수의 데이터베이스를 가진 Architecture/NHibernate

어떻게 작동하도록 구성합니까?

EDIT : Fluent NHibernate의 SchemaIs 메소드가 엔티티를 다른 데이터베이스의 테이블에 매핑하는 것이 좋을까요? 나는 이것이 NHib의 xmp 매핑 파일을 통해서도 가능하다고 믿는다.

답변

3

추가 데이터베이스 대신 NHibernateSession.AddConfiguration을 사용해야합니다. NHibernateSession.AddConfiguration의 호출은 NHibernateSession.Init() 바로 아래에있다. 두 번째 초기화를 위해 명시 적 세션 팩토리 키를 정의해야합니다.

전체 프로세스를 여기에서 자세히 설명합니다.

https://github.com/sharparchitecture/sharp-architecture/wiki?Page=FAQ

2

내가 한 방법은 여러 nhibernate 구성 파일을 사용하여 global.asax.cs 내의 InitializeNHibernateSession에서 여러 NHibernateSessions를 초기화하는 것입니다. 그런 다음 각 적절한 작업 방법에 대해 컨트롤러에서 [Transaction ("nhibernate.dbname")] (dbname은 WebSessionStorages에 할당 된 이름 임)을 사용했습니다.

+0

당신은 당신의 InitializeNHibernateSession 방법의 샘플을하시기 바랍니다 게시 할 수 있을까요? 감사. – LordHits

+0

여기에 ... public override void Init() { base.Init(); webSessionStorage1 = 새 WebSessionStorage (이 "nhibernate.db1"); webSessionStorage2 = 새 WebSessionStorage (this, "nhibernate.db2"); } ... 개인 무효 InitializeNHibernateSession() { NHibernateSession.Init ( webSessionStorage1, 새 문자열 [] {는 Server.MapPath ("~/빈/MyProject.Data.dll")}, 서버 .MapPath ("~/NHibernateDB1.config")); NHibernateSession.Init ( webSessionStorage2, 새로운 캐릭터 [{는 Server.MapPath ("~/빈/MyProject.Data.dll")} 는 Server.MapPath ("~/NHibernateDB2.config")); } – Richard

+1

하나의 컨트롤러 동작이 데이터베이스에서 모두 작동하는 경우 어떻게해야합니까? – Amitabh

관련 문제