2011-11-17 1 views
0

하나의 어셈블리에 모든 NHibernate가 있고 그 어셈블리가 내 응용 프로그램에 대한 NHibernate 세션에로드되고 잘 작동합니다. 필자의 엔티티 맵핑 파일 중 하나를 다른 것으로 맵핑해야하지만 테스트 프로젝트에는 어떻게해야합니까? 어셈블리의 매핑을로드 한 다음 대체하려는 매핑을 추가하려고 시도했지만 오류가 발생했습니다. 내가 BuildSessionFactory를 호출하기 전에 하나의 엔티티 매핑을 대체 할 수 있도록하려는테스트 맵핑 바꾸기

Configuration _configuration = new Configuration() 
     .SetProperty(Environment.ReleaseConnections, "on_close") 
     .SetProperty(Environment.Dialect, typeof (SQLiteDialect).AssemblyQualifiedName) 
     .SetProperty(Environment.ConnectionDriver, typeof (SQLite20Driver).AssemblyQualifiedName) 
     .SetProperty(Environment.ConnectionString, "data source=:memory:") 
     .SetProperty(Environment.ProxyFactoryFactoryClass, 
        "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle") 
     .AddAssembly(assemblyContainingMapping); 
    _sessionFactory = _configuration.BuildSessionFactory(); 

() :

여기 내 매핑 코드입니다.

+0

'_configuration.AddXml (File.ReadAllText ("newmapping.hbm.xml은"));'단지 – Firo

+0

작동합니다 그것은 이미 .AddAssembly (assemblyContainingMapping) 라인에 의해 추가 된 엔티티를 대체하기 위해 작동 할 것인가? – mpenrow

+0

다음과 같은 오류 message.NHibernate.DuplicateMappingException : 중복 클래스/엔티티 매핑 Opus3.Models.Activity – mpenrow

답변

1

어셈블리 리소스를 수동으로 반복하고 그 중 하나를 제외하고 모두 추가하십시오.

일부 세부 정보 만 변경하려는 경우 해당 유형에 대한 클래스 매핑을 가져 와서 값을 변경할 수 있습니다.

var에 매핑 = config.GetMapping (대해서 typeof (MyClass에)) 매핑의 // 변경 사항