「Fluent NHibernate/フルーエントマッピング/オートインクリメント」の版間の差分
imported>Administrator ページの作成:「Fluent NHibernateおよびMySQLでプライマリキーのオートインクリメントを記述する方法。 == エンティティ == プライマリキー...」 |
Administrator (トーク | 投稿記録) 細 Administrator がページ「利用者:Html123456永久不滅」を「Fluent NHibernate/フルーエントマッピング/オートインクリメント」に、リダイレクトを残して移動しました |
||
(相違点なし)
| |||
2025年3月29日 (土) 21:59時点における最新版
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();
}
}
関連項目[編集 | ソースを編集]
参考文献[編集 | ソースを編集]