처음에는 ORM, nhibernate 및 FHN을 처음 사용했습니다. 나는 며칠 동안이 물건을 조사한다. Nhibernate - CompositeId로 DomainObjects와 Mapping을 디자인하는 방법
그래서 내가 Auswahl 및 RefAuswahlFilter 일하러 먼저 시도 : 내가 4 개 테이블이 기존 데이터베이스가 있습니다. 여기 내 DomainObjects 있습니다 : PLS 내가 할 수있을 때 알려이 더 나은 여기[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 : FILTERANK1_ 같은 Auswahl4_1_, IDAUSWAHL1_ 같은 reffilters0_.IDAUSWAHL, reffilters0_.FILTERANK로 reffilters0_.Auswahl_id을 선택 reffilters0_ .IDAUSWAHL을 (를) IDAUSWAHL3_0_, reffilters0_.FILTERANK을 (를) FILTERANK3_0_, reffilters0_.Fil ter as Filter3_0_ FROM REFAUSWAHLFILTER reffilters 0_ 어디에서 reffilters0_.Auswahl_id =?]
그래서 내 매핑에 뭔가가 잘못 생각하지만, 난 정말 못해.
xx.
시도를 좋은하지 보인다. HasMany (x => x.RefFilters); 구문이 여전히 작동하는지 확신 할 수 없습니다. – rebelliard