【发布时间】:2010-08-18 07:44:34
【问题描述】:
起初我对 ORM、nhibernate 和 FHN 真的很陌生。我现在研究了几天。 我有一个包含 4 个表的现有数据库:
所以我首先尝试让 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ültiger Bezeichner\n"}
无法初始化集合:[ORMTest.DomainModel.Auswahl.RefFilters#1097][SQL: SELECT reffilters0_.Auswahl_id as Auswahl4_1_, reffilters0_.IDAUSWAHL 作为 IDAUSWAHL1_, reffilters0_.FILTERANK 作为 FILTERANK1_, reffilters0_.IDAUSWAHL 作为 IDAUSWAHL3_0_, FILTERANK as FILTERANK3_0_, reffilters0_.Filter as Filter3_0_ FROM REFAUSWAHLFILTER reffilters0_ WHERE reffilters0_.Auswahl_id=?]
所以我认为我的映射有问题,但我真的不明白。
谢谢。
【问题讨论】:
-
尝试从 HasMany 中删除
。 HasMany(x => x.RefFilters);不确定该语法是否仍然有效。
标签: c# nhibernate orm fluent-nhibernate nhibernate-mapping