【问题标题】:AutoNumber ID in database数据库中的自动编号 ID
【发布时间】:2019-09-01 15:45:49
【问题描述】:

数据插入数据库时​​要做什么,“ID”列是自动编号。 我试过这个:

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int IdMema { get; set; }
public string Autor { get; set; }
public int? Like { get; set; }
public int? Dislike { get; set; }

属性“Memy”表:

CREATE TABLE [dbo].[Memy] (
    [Id_mema] INT  NOT NULL IDENTITY,
    [autor]   TEXT NULL,
    [like]    INT  NULL,
    [dislike] INT  NULL,
    PRIMARY KEY CLUSTERED ([Id_mema] ASC)
);

当我尝试插入数据时,我看到:

"SqlException: 无法为标识列插入显式值 当 IDENTITY_INSERT 设置为 OFF 时,表 'Memy'。"

如何解决?

【问题讨论】:

  • 原因是你的id栏没有设置auto increment
  • 消息显示当 IDENTITY_INSERT 设置为 OFF
  • 如何在 id 列设置自动补足?
  • 我要启用自动增量
  • @kamilm758 如果重新创建表是一个简单的选择,而不仅仅是删除表并重新运行 create 查询,此更改 [Id_mema] INT IDENTITY(1,1) NOT NULL PRIMARY KEY

标签: c# entity-framework auto-increment


【解决方案1】:

当您要插入如下值时,您不需要传递 Id_mema 值。

INSERT INTO MEMY values ('kamilm',10,5);

如果您不想自动增加列,请将DatabaseGeneratedOption.Identity 更改为DatabaseGeneratedOption.None,它将允许您在 Id(Key) 列中插入值。

 [Key]
 [DatabaseGenerated(DatabaseGeneratedOption.None)]
 public int IdMema { get; set; }
 public string Autor { get; set; }
 public int? Like { get; set; }
 public int? Dislike { get; set; }

【讨论】:

    【解决方案2】:

    您有自动递增字段Id_mema。使用 IDENTITY 关键字设置自动增量。例外说:

    SqlException:无法为标识列插入显式值 当 IDENTITY_INSERT 设置为 OFF 时,表 'Memy'。

    当您向表中插入数据时,您无法为标识字段赋值。数据库引擎为Id_mema-field 赋值(自动递增0,1,2,3..)

    以下应该可以工作(直接sql):

    INSERT INTO MEMY(autor, like, dislike) values ('text',1,0)
    

    如果是实体框架,请确保不要在代码中设置Id_mema

    【讨论】:

    • 但是 OP 没有将 ID 列设置为自动递增,我很困惑在您提供查询的情况下将存储什么值。
    • 自动递增! [Id_mema] INT NOT NULL IDENTITY 和主键
    猜你喜欢
    • 2012-09-10
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2012-03-10
    • 2014-11-18
    • 1970-01-01
    • 2011-08-04
    相关资源
    最近更新 更多