起初,我對ORM,nhibernate和FHN真的很陌生。我現在仔細研究這些東西。 我有4代表的現有數據庫:Nhibernate - 如何使用CompositeId設計DomainObjects和映射
,所以我第一次嘗試獲得Auswahl和RefAuswahlFilter工作。
這裏是我的DomainObjects:請讓我知道什麼時候我能做到更好
[Serializable]
public class Auswahl
{
public Auswahl()
{
this.RefFilters = new List<RefAuswahlFilter>();
}
public virtual IList<RefAuswahlFilter> RefFilters { get; set; }
//...rest of the Properties
[Serializable]
public class RefAuswahlFilter
{
public virtual Auswahl Auswahl { get; set; }
public virtual long Filterrank { get; set; }
public virtual string Filter { get; set; }
這裏是我的映射:
public class AuswahlMap : ClassMap<Auswahl>
{
public AuswahlMap()
{
Table("AUSWAHL");
Id(x => x.Id)
.GeneratedBy.Sequence("SEQ_AUSWAHL");
Map(x => x.Programm);
Map(x => x.Variante);
Map(x => x.Returnkey);
Map(x => x.Beschreibung);
HasMany<RefAuswahlFilter>(x => x.RefFilters);
}
}
public class RefAuswahlFilterMap : ClassMap<RefAuswahlFilter>
{
public RefAuswahlFilterMap()
{
Table("REFAUSWAHLFILTER");
CompositeId()
.KeyReference(x => x.Auswahl,"IDAUSWAHL")
.KeyProperty(x => x.Filterrank,"FILTERANK");
Map(x => x.Filter);
}
}
,如果我跑我的應用我有一個列表中的所有我的Auswahl行。
var l = session.CreateCriteria(typeof(Auswahl)).List<Auswahl>();
但是當我看着一個項目,以獲得調試器顯示以下錯誤RefFilters:
的InnerException { 「ORA-00904:\」,「\ 「REFFILTERS0 \ AUSWAHL_ID \」: ungültigerBezeichner \ n「}
無法初始化集合:[ORMTest.DomainModel.Auswahl.RefFilters#1097] [SQL:SELECT reffilters0_.Auswahl_id爲Auswahl4_1_,reffilters0_.IDAUSWAHL爲IDAUSWAHL1_,reffilters0_.FILTERANK爲FILTERANK1_,reffilters0_ .IDAUSWAHL爲IDAUSWAHL3_0_,reffilters0_.FILTERANK爲FILTERANK3_0_,reffilters0_.Fil ter作爲Filter3_0_從REFAUSWAHLFILTER reffilters0_ WHERE reffilters0_.Auswahl_id =?]
所以我認爲我的映射是錯誤的,但我真的沒有得到它。
thx。
嘗試消除的hasMany的。 HasMany(x => x.RefFilters); 不確定該語法仍然有效。 –
rebelliard
2010-08-18 12:20:05