2009-03-31 3 views
4

배경 :런타임에 nHibernate 매핑을 추가 하시겠습니까?

nHibernate 수를 사용하려고 할 때 내가 매핑 실패를 얻고있다. 응용 프로그램은 여러 개의 어셈블리로 구성됩니다. 어셈블리 중 하나는 유용한 루틴의 라이브러리이고 다른 하나는 라이브러리를 사용하는 응용 프로그램 코드입니다. 라이브러리 어셈블리는 nHibernate 구성에 자신을 추가하지만 다른 어셈블리에 대해서는 알지 못하므로 라이브러리 어셈블리를 추가하지 않습니다. 내 xml 매핑 파일은 응용 프로그램 어셈블리에 있습니다. 응용 프로그램 어셈블리에서 찾고 있지 않기 때문에 찾을 수 없다고 생각합니다.

질문 : 구성에 추가하지 않고 임의의 어셈블리에서 클래스에 매핑 할 수 있습니까?

그렇지 않은 경우 런타임에 매핑을 추가 할 수 있습니까?

감사합니다.

p.s. 내가 초기에 어셈블리를 추가 할 수 있도록 기본 라이브러리를 변경

4월 3일 '09 - 내가 매핑 파일이 포함 된 리소스로


업데이트를 표시했다 확인했다. 그것은 위대한 일을하는 것 같습니다.

ISessionFactory sf = new Configuration() 
    .AddFile("Item.hbm.xml") 
    .AddFile("Bid.hbm.xml") 
    .BuildSessionFactory(); 

또는 어셈블리 : 당신은 당신의 세션 공장이 건설되고있는 시점에서 런타임에 매핑을 추가 할 수 있습니다

답변

7

귀하의 코멘트를 다시

ISessionFactory sf = new Configuration() 
    .AddAssembly("NHibernate.Auction") 
    .BuildSessionFactory(); 
+1

감사합니다 :) 나는 그 옵션을 보았습니다, 불행히도 그 코드는 라이브러리 어셈블리에 있습니다. 다른 어셈블리 또는 매핑에 대해서는 알지 못합니다. 세션을 만들고/연 후에 추가 할 수 있습니까? – Jay

3

- 아니 당신이 매핑을 추가 할 수 없습니다 당신이 구축되면 세션 팩토리. 그러나 세션 팩토리를 다시 만들 수 있습니다. 그것이 비싼 작업 (초 정도) 될 수 있지만 염두에 두십시오.

+0

고마워, 그게 내가 뭘 생각하는지 확인하는 데 도움이 :) – Jay

관련 문제