メインメニューを開く

Fluent NHibernate/フルーエントマッピング/オートインクリメント

< Fluent NHibernate‎ | フルーエントマッピング
2012年7月8日 (日) 09:23時点におけるimported>Administratorによる版 (ページの作成:「Fluent NHibernateおよびMySQLでプライマリキーのオートインクリメントを記述する方法。 == エンティティ == プライマリキー...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

Fluent NHibernateおよびMySQLでプライマリキーのオートインクリメントを記述する方法。

目次

エンティティ編集

プライマリキーとなるプロパティにはセッターにprotected属性をつけておく。 また、オートインクリメントなのでintやlongなどの整数型を指定しておく。

public class ItemX
{
    public virtual long Id { get; protected set; }
}

マッピング編集

マッピングクラスでId列にGeneratedBy.Identity()を指定することでMySQL向けのスキーマ自動生成時にオートインクリメント属性が付く。

GeneratedBy.Increment()という非常に紛らわしい名前の物もあるが、少なくともMySQLではGeneratedBy.Identity()でオートインクリメントである。

調査はしていないがMySQL以外のデータベースエンジンではGeneratedBy.Increment()でオートインクリメントなのかもしれない。というか他のDBではシーケンスを使うのが一般的なのでオートインクリメントはMySQLにしか存在しないような気がしないでもない。詳しくは知らない。

public class ItemXMap : ClassMap<ItemX>
{
    public ItemXMap()
    {
        Id(x => x.Id)
            .GeneratedBy.Identity();
    }
}

関連項目編集

参考文献編集


外部リンク編集