1
:
양쪽에 복합 키를 가진 일대 다 매핑에 문제가 있습니다. 여기 1 : 다수 매핑 : 유창한 NHibernate : 합성 ID들 :
public class OneSide
{
public virtual int A { get; set; }//-A,B,C,D together form primary key
public virtual int B { get; set; }
public virtual int C { get; set; }
public virtual int D { get; set; }
public virtual int OtherData { get; set; }
public virtual IList<ManySide> Ls { get; set; }
}
public class OneSideMap : ClassMap<OneSide>
{
public OneSideMap()
{
LazyLoad();
CompositeId().KeyProperty(x => x.A).KeyProperty(x => x.B).KeyProperty(x => x.C).KeyProperty(x => x.D);
Map(x => x.OtherData).Not.Nullable();
HasMany(x => x.Ls).KeyColumns.Add("A", "B", "C", "D").Inverse().Cascade.All();
}
}
public class ManySide
{
public virtual OneSide OneSide { get; set; }
public virtual int A { get; set; }//-A,B,C,D,E together form primary key
public virtual int B { get; set; }
public virtual int C { get; set; }
public virtual int D { get; set; }
public virtual int E { get; set; }
public virtual int OtherData2 { get; set; }
}
public class ManySideMap : ClassMap<ManySide>
{
public ManySideMap()
{
LazyLoad();
CompositeId().KeyReference(x => x.A).KeyReference(x => x.B).KeyReference(x => x.C).KeyReference(x => x.D).KeyProperty(x => x.E);
Map(x => x.OtherData2).Not.Nullable();
References(x => x.OneSide).Columns("A", "B", "C", "D").Cascade.All();
}
}
데이터베이스 구조입니다 :
table: OneSide:
int A;
int B;
int C;
int D;
int OtherData;
table: ManySide:
int A;
int B;
int C;
int D;
int E;
int OtherData2;
나는 그것이 정확하지 알고 난으로 무엇이 잘못되었는지 생각에서 지금이야 여기
는 내가 지금까지 무엇을 가지고 몇 시간 전에 NHibernate를 배우기 시작했습니다. 누군가 내 코드에서 잘못된 점을 지적 할 수 있습니까?