如何使用 Fluent-NHibernate 和 MySQL 指定自动递增 (int) 标识列
Posted
技术标签:
【中文标题】如何使用 Fluent-NHibernate 和 MySQL 指定自动递增 (int) 标识列【英文标题】:How to specify an auto-incrementing (int) identity column using Fluent-NHibernate and MySQL 【发布时间】:2011-04-29 11:17:02 【问题描述】:标题基本上说明了一切......我正在尝试使用 Fluent-NHibernate 和 mysql 指定一个自动递增 (int) 标识列。我尝试了以下变体...
Id(x => x.ID).GeneratedBy.Native(); Id(x => x.ID).GeneratedBy.Identity(); Id(x => x.ID).GeneratedBy.Increment();
...并尝试为每个设置默认值。
注意:我使用的是 int 数据类型并且收到了诸如...之类的错误。
“输入字符串的格式不正确。”
或者……
“字段'ID'没有默认值'
【问题讨论】:
【参考方案1】:我正在使用
public class User
public virtual int Id get; set;
public virtual IList<Names> Names get; set;
public virtual IList<Addresses> Addresses get; set;
并将映射作为增量并为我工作。
Id(x => x.Id).GeneratedBy.Increment();
【讨论】:
【参考方案2】:在 MySQL 中,您可以创建一个列并将其属性称为 AUTO_INCREMENT 和 DEFAULT VALUE 1(或任何您想要的),为什么不使用它?
--干杯
【讨论】:
当 Fluent-NHibernate 生成架构时,它会自动生成数据类型为 int(11) 且具有自动增量的列。没有默认值,但设置一个并没有什么不同。 Argh... Web.config 使用的是旧版数据库所在的旧连接字符串。更正之后...“Id(x => x.ID).GeneratedBy.Identity();”工作没有问题。以上是关于如何使用 Fluent-NHibernate 和 MySQL 指定自动递增 (int) 标识列的主要内容,如果未能解决你的问题,请参考以下文章
Fluent NHibernate使用我的用户名作为前缀创建表
更改 NHibernate 中的初始 LazyLoad 行为