【问题标题】:Linq to sql error with identitiy increment field带有标识增量字段的 Linq to sql 错误
【发布时间】:2010-09-26 09:46:35
【问题描述】:

我刚刚开始使用 linq to sql,但在插入带有自动递增字段的记录时遇到了问题。

我创建了一个由 linq 定义的公司对象的新实例。它已将自动递增字段“companyID”初始化为 0。 InsertOnSubmit() 失败并出现以下 invalidOperationException。

不正确的自动同步规范 成员“公司 ID”

对于 companyID 属性,列属性 IsDbGenerated 为 true。 我使用的是 sql server 2000。

编辑:自动同步设置为 OnIsert。数据类型在 TSQL 中为 BigInt,在 c# 中为 long。

有谁知道为什么会出现这个错误以及如何解决?

谢谢

【问题讨论】:

    标签: .net sql linq auto-increment


    【解决方案1】:

    该类/表上的“自动同步”属性的值是多少?

    我刚刚检查了一下,它设置为“OnInsert”。此外,“自动生成的值”设置为 true。

    【讨论】:

      【解决方案2】:

      什么是数据类型?诠释? (在 TSQL 和 C# 中都是 int 吗?)

      您有什么自动同步设置?对于主键,它应该是“OnInsert”

      【讨论】:

        【解决方案3】:

        找到了答案。这与主键有关。在 linq 设计器中,主键已按应有的方式设置。在数据库中,相关字段未设置为主键。我修复了数据库中的键,这解决了问题。

        【讨论】:

        • 听起来您手动编辑了 L2S 文件。我建议始终让文件从您的数据库自动生成(使用 sql metal 或设计器)。如您在此处看到的那样,直接对其进行编辑会导致不一致。
        【解决方案4】:

        同样的问题。 在 DBML 中设置主键并将 AutoSync 属性更改为 "OnInsert" 帮助

        【讨论】:

          【解决方案5】:

          On insert 选项仅在您在数据库中插入值时设置。如果您对数据库的安全选项没有任何问题,请始终在数据库中使用 Never 选项。

          【讨论】:

            【解决方案6】:

            如果可能,请删除您的数据库并重新创建。我的情况是当我忘记在表上添加主键时。然后在第一次插入数据库后,我得到了关于缺少主键的提示。我在 dbml 设计器中手动应用了它,但第一个 ID 已被占用,导致“不正确的自动同步”异常。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-06-11
              • 1970-01-01
              相关资源
              最近更新 更多