如何使用 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 行为

使用 ADO.NET 流畅的 NHibernate 地图

如何使用 php 和 mysql 使用纬度和经度进行几何搜索

如何查看手机内存和CPU使用情况

如何接收和使用 NSErrorPointer