패키지와의 관계가 많은 Shape 클래스가 있습니다. 이 양방향 관계의 의미는, Product가 특정의 Shape를 가지는 경우, 그 Shape가 관련 지을 수 있었던 Packages에 의해 Packaged 될 수있는 것입니다. 패키지가 패키지에 의해 패키지화되고있는 경우는, 역도에 적용됩니다. 이것은,이 Product가이 Package와 관련한 Shape가 아니면 안되는 것을 나타냅니다.NHIbernate 양방향 many to many 매핑 삽입 업데이트 문제
따라서 Shape가 포함 된 패키지 및 패키지가 포함 된 도메인 모델이 있습니다. 따라서 NH 매핑은 Shape, Package 및 PackageToShape 테이블을 생성합니다.
그러나 버전 관리를 적용하면 PackageToShape 테이블에 여러 개의 업데이트와 삽입이 발생합니다. 사실, 예를 들어 ShapeId = 1, PackageId = 1과 같은 관계가 먼저 제거 된 다음 다시 삽입됩니다. 실제로 Guides를 사용합니다. 하지만 요점은이 설치 NH는 행을 삭제 한 다음 다시 똑같은 행을 추가하는 여러 테이블에 여러 삭제 및 삽입 문을 작성한다는 것입니다!
이런 일이 발생하지 않도록하는 방법이 있습니까 ?? (유창함 NH 사용)
매핑 패키지에 대한
public sealed class ShapeMap: EntityMap<Shape, Guid, ShapeDto>
{
public ShapeMap()
{
HasManyToMany(s => s.Packages)
// Fetch.Join will raise laizy collection load error
.Fetch.Select()
.AsSet()
.Cascade.All();
HasManyToMany(s => s.UnitGroups)
// Fetch.Join will raise laizy collection load error
.Fetch.Select()
.AsSet()
.Cascade.All();
HasManyToMany(s => s.Routes)
// Fetch.Join will raise laizy collection load error
.Fetch.Select()
.AsSet()
.Cascade.All();
}
매핑 :
public class PackageMap : EntityMap<Package, Guid, PackageDto>
{
public PackageMap()
{
Map(p => p.Abbreviation).Not.Nullable().Length(30).Unique();
HasManyToMany(p => p.Shapes)
// Fetch.Join will raise laizy collection load error
.Fetch.Select()
.AsSet()
.Inverse()
.Cascade.All();
}
}
법인 맵 ID, 이름 (고유) 및 버전 매핑을 구현합니다.