NHibernate手动设置id为自动递增

本文关键字:id 设置 NHibernate | 更新日期: 2023-09-27 18:14:23

我使用NHibernate映射代码与MYSQL,并有映射如下:-

Id(x => x.Id, map => { map.Column("ID"); map.Generator(Generators.Native); });

和数据库如下:-

ID int not null AUTO_INCREMENT

之所以使用Generators.Native,是因为数据库会通过AUTO_INCREMENT生成它的id。但我想在某些情况下手动设置id (Id=10)。我怎么能改变映射,如果Id=0然后使用'AUTO_INCREMENT',否则使用已经设置的Id,这是10。

我在网上查了一下,得到了这个链接(自定义Id生成器),但它是Java + Hibernate。我不知道如何将NHibernate mapping by code转换为C#

NHibernate手动设置id为自动递增

在hibernate中,您可以使用注释来定义。例如,你可以定义如下

@GeneratedValue(strategy=GenerationType.IDENTITY)

identity属性从数据库中获取自动增量

你需要做的就是把你的Id定义从Native改为Assigned。

Id(x => x.Id, map => {map. column (" Id ");分配map.Generator(发电机。);});