2011-07-28 1 views
0

복합 (프리즘) WPF 애플리케이션을 구축 중입니다. 나는 hava가 몇 가지 핵심 elemets을 구축 관리 : 예를 들어 폴더에서 모듈을 발견. 또한 데이터를 유지하기 위해 NHibernate (Fluent)를 사용하고 있습니다. 필자는 모듈마다 별도의 모델을 만들 수 있었고 모든 것이 자신의 모델과 매핑이었으며 Prism이 모듈을 추가하면 nh 구성에 매핑을 추가합니다.NHibernate 복합 애플리케이션 - 모듈 시작 레코드

내가 시작하고 싶지 않은 모듈을 사용할 때 일부 시작 레코드를 삽입하고 싶습니다. 예 :

처음으로 앱을 시작하면 db가없는 것을 감지하고 하나의 구성 테이블에서만 데이터베이스를 생성합니다. 이 테이블에는 활성화 된 모듈에 대한 정보가 들어 있습니다. 그런 다음 관리자는 모듈을 사용하도록 설정해야 UI를 통해 앱을 구성 할 수 있습니다. 다음에 앱이 시작되면 새로 활성화 된 모듈에서 새 탭을 감지하고 NH UpdateSchema를 사용하여 테이블을 만듭니다. 내가 뭘하고 싶은데 또한이 테이블 생성과 함께 일부 시작 레코드를 삽입하는 것입니다. 이것은 NH 이벤트 (NH documentation on events)에 의해 수행되어야한다고 생각합니다. 'PostTableCreateEvent'같은 것이 좋을지 만 이와 같은 것을 찾을 수 없습니다.

혹시 이런 일을하셨습니까?

답변

1

이벤트는 세션에서 트리거되지만 Schemaexport Doest는 세션 팩토리 또는 세션을 가져와 거기에 걸릴 수 없습니다. 이것을 원하는 경우 FNH가 <database-object> afaik를 지원하지 않으므로 xml 매핑 또는 일반 sql에 <database-object><create>INSERT ...</create><drop></drop></database-object>이 있습니다.

옵션 1 : <database-object>

옵션 2와 NH-구성 및 embed 매핑의 생성에 유창하고 hbm.xml 매핑을 추가 모듈 중 하나에 테이블 만들기 (이후 추가 단계 (SQL)를 취할 수 있도록 내 프로젝트 나는 내 자신의 클래스에서 Schemaexport 래핑/메서드는 또한 schemaexport에 의해 처리되지 않는 데이터베이스 자체를 생성하고 schemaversion 및 configs 같은 사용자 정의 데이터를 삽입

+0

감사합니다 Firo, 나는 두 번째 옵션으로 갈 것 같아요 – bodziec