【问题标题】:Primary key auto increment主键自增
【发布时间】:2018-06-15 18:38:54
【问题描述】:

问题:之前我调用了下面的函数。

ArchiveDeletedPatient.ID = 18
_archiveDB2.patient.Add(ArchiveDeletedPatient);
_archiveDB2.SaveChanges();

之后我从患者数据库中删除了所有记录(从患者中删除),现在在我的数据库中它是空的。我再次调用了上面的函数,但是这次它自动将 ID 增加到 19 并插入到数据库中。我向上述函数发送了垃圾邮件,并且它一直在增加。如何删除这样的功能?我不需要自动增量。

有些人可能会说这是因为数据库设置。我尝试使用 Microsoft SQL Server Management Studio 17 "INSERT INTO PATIENT TABLE VALUES(18, ...) 手动插入。它允许我插入并且当表中有这样的 ID 时。它不会自动递增,只会提示我一个错误。如何在 c# linq 中删除这种自动递增功能。

【问题讨论】:

  • 更改表架构。使主键不“播种”或设置为自动递增。
  • 好吧,我发现了我的错误。我使用了 Identity(1,1),这意味着它会自动递增。删除身份后解决了这个问题(1,1)谢谢。

标签: c# mysql entity-framework


【解决方案1】:

自动增量功能不是 linq c# 的。 查看表属性,您可以编辑 pk 以删除“身份”以删除自动增量或添加“身份”。 如果在 bbdd 中激活了身份,则在数据库中计算 id,然后 linq 将其返回到您的实体中。

【讨论】:

    【解决方案2】:

    自动递增不是 Linq 的特性。这是数据库的特性。 以下是从 MS SQLServer 中删除自动增量的完整说明:

    • 打开您的数据库。
    • 右键单击您的表格并选择设计。
    • 选择要删除自动递增的特定列。
    • 在列属性窗口中单击身份规范字段并取消选中此项。
    • 保存表格设计。

    这里是……

    注意:

    如果您使用实体框架并使用 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 指定您的字段,请删除此注释

    将其替换为[DatabaseGenerated(DatabaseGeneratedOption.None)]

    【讨论】:

    • 这不会删除数据库中的 AUTO_INCREMENT 规范。
    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 2012-07-31
    • 2015-06-30
    • 2018-06-05
    • 2018-12-10
    • 2011-07-21
    相关资源
    最近更新 更多