Fluent NHibernate/フルーエントマッピング/複合主キー

提供: MonoBook
< Fluent NHibernate‎ | フルーエントマッピング
2012年7月8日 (日) 08:26時点におけるimported>Administratorによる版 (ページの作成:「Fluent NHibernate複合主キーを記述する方法。 == エンティティ == 複合主キーを用いるエンティティクラスでは、とくに...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

Fluent NHibernate複合主キーを記述する方法。

エンティティ

複合主キーを用いるエンティティクラスでは、とくに何もしてなくてもEqualsメソッドとGetHashCodeメソッドをオーバーライドしておく必要がある。これをしないと実行時にエラーとなる。

public class NodeX
{
    public virtual long Id1 { get; set; }
    public virtual long Id2 { get; set; }

    // これ重要
    public override bool Equals(object obj)
    {
        return base.Equals(obj);
    }

    // これも重要
    public override int GetHashCode()
    {
        return base.GetHashCode();
    }
}

マッピング

マッピングクラスではCompositeIdメソッドでマッピングを行う。 KeyPropertyメソッドで複合主キーにしたいカラムを次々と書いてくことで実現できる。

public class NodeXMap : ClassMap<NodeX>
{
    public NodeXMap()
    {
        CompositeId()
            .KeyProperty(x => x.Id1, "Id1")
            .KeyProperty(x => x.Id2, "Id2")
            ;
    }
}

関連項目

参考文献


外部リンク