데이터베이스에서 GUID 식별자가있는 엔티티를 가져 오는 중 ... 엔티티를 다른 데이터베이스에 저장하고 동일한 GUID 식별자를 유지해야합니다. 이제 NHibernate가 새로운 GUID를 생성합니다. 이 방법으로 엔티티의 매핑 파일을 구성했기 때문에 저장 작업을 수행 할 때마다 이것은 정상적인 작업입니다. 런타임에 사용 사례에 대한 매핑을 수정할 수있는 가능성이 있습니까?런타임에 NHibernate 모델 매핑 변경
ID 매핑을 정의하는 방법은 다음과 같습니다. 가능한 경우이를 유지하고 싶습니다. 내가 IdentifierStrategyGenerator로 변경하려고 어떻게 여기
public class OrderMap : ClassMap<Order>
{
public OrderMap()
{
Table("t_Order");
Id(o => o.Id).GeneratedBy.GuidComb();
.....
.....
.....
}
}
그리고이 있지만, 효과없이, NHibernate에 모든 작업을 저장하기위한 새 GUID를 할당하고, 내가 원하는 식별자를 잃고있다.
private void UpdateClientDatabase()
{
var key = HibernateMultipleDatabasesManager.Configuration
.GetClassMapping(typeof(Order)).Key as NHibernate.Mapping.SimpleValue;
key.IdentifierGeneratorStrategy = "assigned";
key.NullValue = "undefined";
using (var session = HibernateMultipleDatabasesManager.DataSessionFactory("SQLiteDatabase").OpenSession())
{
_downloadedOrders.OfType<Order>().ForEach(_ => session.Save(_));
}
}
좀 더 많은 작업이 있지만 두 개의 세션 팩토리를 다른 매핑으로 회전시킬 수 있습니다. – Fran
@Fran에 동의합니다. 실행 시간에 원하는 세션을 삽입 할 수 있습니다. –