Fluent NHibernate를 사용하여 파일을 읽고 씁니다. 매핑이NHibernate : 상태 저장 세션과 무 상태 세션은 서로 다른 매핑이 필요합니다.
public class ParentMappings: ClassMap<Parent>
{
public ParentMappings()
{
Table("Parent");
Id(x => x.Id).Column("Parent_Id");
...
HasMany(x => x.Children)
.Not.KeyNullable()
.Not.Inverse()
.KeyColumn("Parent_Id")
.Cascade.All();
...
}
}
및
public class ChildMappings : ClassMap<Child>
{
public ChildMappings()
{
Table("Child");
Id(x => x.Id).Column("Child_Id");
Map(x => x.ParentId).Column("Parent_Id");
...
}
}
에 의해 정의와 함께 순간, 나는 여기에 문제가, 부모 - 자식 관계를 가지고있다. 속도를 유지하기 위해 상태 저장 세션을 사용하여 부모/자식 테이블에 쓸 수 있기를 원하지만 Stateful 세션으로 테이블에서 읽으므로 Children 컬렉션이 올바르게로드됩니다. 그러나 두 가지 접근 방식은 양립 할 수없는 것으로 보인다. HasMany()
을 호출하면 스탯리스 쓰기가 중단됩니다. 제거하면 상태 저장 읽기가 중단됩니다.
더 넓은 의미에서 스테이트 풀 세션을 사용하여 데이터베이스에 쓰고 싶은 경우도있을 수 있습니다. 그러나이 경우 Map(x => x.ParentId).Column("Parent_Id")
문을 포함하면 상태 기록을 깨뜨릴 수 있습니다.
스테이트 풀 세션과 스테이트리스 세션에 대해 서로 다른 매핑을 사용해야하는 것처럼 보입니다. 그러나, 나는 NHibernate에 익숙하지 않으며,이 단계에서이를 수행하는 명백한 방법을 볼 수 없다. 누구든지이 작업을 수행 할 수있는 방법이나 이에 상응하는 해결 방법을 제안 할 수 있습니까?
뛰어난 답을 충돌하지 않는 성능을 향상시키기 위해 역을 설정할 수 있습니다 - 많은 감사를. –