【问题标题】:How to specify an auto-incrementing (int) identity column using Fluent-NHibernate and MySQL如何使用 Fluent-NHibernate 和 MySQL 指定自动递增 (int) 标识列
【发布时间】: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'没有默认值'

【问题讨论】:

    标签: c# mysql nhibernate fluent-nhibernate


    【解决方案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();”工作没有问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多