1
我在使用一對多複合關鍵字進行一對多映射時遇到了問題。使用複合ID在流暢NHibernate中進行一對多映射
這是我到目前爲止有:
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。有人可以指出我的代碼中有什麼問題嗎?