2017-05-18 30 views
0

나는유창함 NHibernate에 추가 조립 런타임

Control (Solution) 
    AppDB (Project) 
    Classes (Folder) 
     Piece.cs 
    Mapping (Folder) 
     PieceMap.cs 

나는 다음과 같은 지침

Configuration hibernateConfiguration = new Configuration(); 
hibernateConfiguration.SetProperty("connection.connection_string", "server=(local);Data Source="+pRutaDB); 
hibernateConfiguration.AddAssembly("AppDB.Mapping.PieceMap"); 
hibernateConfiguration = hibernateConfiguration.Configure(); 
NHibernate.ISessionFactory sessionFactory = hibernateConfiguration.BuildSessionFactory(); 
NHibernate.ISession session = sessionFactory.OpenSession(); 
NHibernate.ITransaction tr = session.BeginTransaction(); 
Piece p = new Piece(); 
p.name = "Test Piece"; 
pSession.SaveOrUpdate(p); 
tr.Commit(); 

그러나 tr.Commit() 명령을하고 런타임에 어셈블리 맵을 Visual Studio에서 다음과 같은 구조를 추가 한 도착하면 다음 오류가 표시됩니다.

Error: NHibernate.MappingException: Could not add assembly AppDb.Mapping.PieceMap ---> System.IO.FileNotFoundException 

누구나 실행 중에 어셈블리를 추가하는 방법을 알려줄 수 있습니다. 시각?

감사합니다.

편집 :

NHibernate.MappingException: No persister for: GeometriaDB.Clases.Proyecto 

이제 왜 오류가 표시됩니다 : 명령어와 오류는 다음과 같은 오류가 나타납니다 이제

hibernateConfiguration.AddAssembly(typeof(GeometriaDB.Mapping.PieceMap).Assembly);을 변경?

hibernateConfiguration.AddAssembly("AppDB.Mapping.PieceMap.dll"); 

을 또한 같은 디렉토리에 있어야합니다 DLL 또는 어셈블리의 전체 경로를 표시해야합니다 :

+0

당신의 다음 오류가 더 나은, 첫 번째로 할 그것을 위해 전용 질문을 아마 아무 상관이 없습니다. –

+0

처음에는 [이쪽] (http://stackoverflow.com/q/57804/1178314)과 같이 아직 답장되어 있지 않은지 확인하십시오. –

답변

0

은 적어도 당신은 어셈블리 이름에 .DLL 추가해야합니다. 당신이 사용할 수있는

또 다른 방법은 다음과 같습니다

hibernateConfiguration.AddAssembly(typeof(AppDB.Mapping.PieceMap.<and any class name>).Assembly); 
+0

매핑이 cs 파일 인 경우 .dll을 추가해야하는 이유는 무엇입니까? –

+0

정확하게 모르겠지만 매개 변수를 문자열로 표시하면 nhibernate가 파일에서 어셈블리를로드하려고합니다. –

+0

첫 번째 가능성으로 시도했지만 작동하지 않았습니다. 이제 두 번째는 작동하는 것처럼 보이지만 새로운 Exception을 발생시킵니다. 나는 새로운 예외로 초기 게시물을 업데이트하고있다. –