3

単純なネストされたオブジェクト構造を自動マップすることは可能ですか?

このようなもの:

public class Employee : Entity
{
    public Employee() {
         this.Manages = new List<Employee>();
    }
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
    public virtual bool IsLineManager { get; set; }
    public virtual Employee Manager { get; set; }
    public virtual IList<Employee> Manages { get; set; }
}

実行時に次のエラーが発生します。

コレクションのマッピングで繰り返される列: SharpKtulu.Core.Employee.Manages 列: EmployeeFk

この種の構造を自動マップすることは可能ですか、またはこの種の構造の自動マッパーをオーバーライドすることはできますか?

4

2 に答える 2

2

これはおそらく、規約が「クラス名」+「Fk」として外部キーを作成するためです。したがって、Manager プロパティと Manages プロパティの両方で同じ FK 列を取得します。FK 列にプロパティ名が含まれるように規則をオーバーライドして、EmployeeManagerFk と EmployeeManagesFk を取得できます。または、左側/右側の両方のクラスも含めます (EmployeeManagerInEmployeeFk) など。

規則をオーバーライドする方法については、こちらを参照してください。または、HasMany/ManyToMany 規則をオーバーライドして、別の設定にすることもできます。FNH のドキュメントを読んだり、Google で調べたり、サンプル コードを読んだりしてください。規則を理解して作業を開始するのは必ずしも簡単ではありません。

もう 1 つの非常に便利なオプションは、.hbm ファイルのエクスポートです。NHibernate のエラー メッセージは必ずしもユーザー フレンドリーではありませんが、私は通常、エクスポートされた .hbm ファイルを見てエラーを見つけます。あなたの場合、重複する名前がどこに適用されているかを簡単に確認できます。

于 2010-03-14T15:09:27.453 に答える
1

これはちょうど更新されました:

http://fluentnhibernate.lighthouseapp.com/projects/33236/tickets/115-self-referencing-relationships

于 2010-05-04T19:56:34.147 に答える