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

提供: MonoBook
ナビゲーションに移動 検索に移動

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();
    }
}

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]


外部リンク[編集 | ソースを編集]