【问题标题】:ORMLite error on insert with autoincrement key使用自动增量键插入 ORMLite 错误
【发布时间】:2018-01-14 02:40:17
【问题描述】:

我有以下MVC 5Model

[Schema("dbo")]
[Alias("map")]
public class Map {
    [PrimaryKey]
    [Alias("id")]
    public int Id { get; set; }

    [Alias("name")]
    public String Name { get; set; }

    //others

}

表上的id 属性是primary key autoincrement

我需要Id 来执行更新操作,但这会阻止我插入新条目。

这个update 有效:

var res = dbConnection.Update<Map>(map);

虽然insert 没有:

var res = dbConnection.Insert<Map>(map, selectIdentity: true);

我得到了这个例外:

当 IDENTITY_INSERT 设置为 OFF 时,无法为表“map”中的标识列插入显式值。

我能做些什么来解决这个问题?

【问题讨论】:

  • 那么,map.Id 的值是多少?
  • 插入没关系,因为我需要DBMS根据当前的增量值来设置
  • 这很重要,因为如果它是非默认的(即不是0),ORM 会尝试将它包含在插入语句中。
  • 我得到的错误是关于“你不能明确设置 id”,不管值是什么......
  • 即使是 0?你能验证一下吗?

标签: mysql asp.net-mvc ormlite-servicestack


【解决方案1】:

[AutoIncrement] 属性指示 ORMLite 从 INSERT 字段列表中省略属性字段。

因此将其应用于 Id 属性:

[PrimaryKey]
[AutoIncrement]
[Alias("id")]
public int Id { get; set; }

并且在插入或更新该实体时,它的值将被忽略。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-10
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多