Fluent NHibernate/フルーエントマッピング/オートインクリメント
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();
}
}
関連項目[編集 | ソースを編集]
参考文献[編集 | ソースを編集]