1
私は、テーブルの列を同じテーブルの主キーにマッピングする状況があります。表には、この親子関係のマップテーブルへのマッピングFluent Nhibernate
---+-------+---------
ID Name ParentId
---+-------+---------
1 Parent1 0
2 Child 1 1
3 Child 2 1
4 Parent2 0
5 Child 3 4
私は、次のモデルと流暢NHibernateのマッピングクラス
//Model.LocationType.cs
public class LocationType
{
public virtual long Id { get; set; }
public virtual string ShortName { get; set; }
public virtual string Description { get; set; }
public virtual IList<LocationType> ParentId { get; set; }
}
と
//Mapping.LocationTypeMap.cs
public class LocationTypeMap : ClassMap<LocationType>
{
public LocationTypeMap()
{
Table("SET_LOC_TYPE");
Id(x => x.Id).Column("LOC_TYPE_ID").GeneratedBy.Assigned();
Map(x => x.ShortName, "SHORT_NAME").Length(15).Not.Nullable();
Map(x => x.Description, "LOC_DESC").Length(50).Not.Nullable();
References(x => x.ParentId).Column("PARENT_LOC_TYPE_ID").Cascade.SaveUpdate();
}
}
を作成しましたが、私は自分のコードを実行したときに、私は次のエラーメッセージを受信していますように見えます:
Unable to cast object of type 'SmartHRMS.Core.Domain.Model.LocationType' to type 'System.Collections.Generic.IList`1[SmartHRMS.Core.Domain.Model.LocationType]'.
編集1: の代わりに使用し、それが働いたと私は前述したが、私はgettting午前、結果は私が必要なものの逆である鋳造問題を解決したが、私は
HasMany(x => x.ParentIds).KeyColumn("PARENT_LOC_TYPE_ID");
を試してみました。上記の例のための結果はとなりますので、親のLocationTypeオブジェクトで は、それは、IList内でのすべてのチャイルズが一覧表示されます:あなたはあなたのマッピングの代わりに、References
でHasMany
を使用する必要がありますように
-----+----------+------
ID Name ParentId
-----+----------+------
1 Parent1 IList<Child1, Child2>
2 Child 2 IList<Empty>
3 .... same
4 Parent2 IList<Child3>
5 Child 3 IList<Empty>
私はそれを起こした問題について私の編集したポストを見てください – Waqas