5

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

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

成员“companyID”的自动同步规范不正确

companyID 属性的列属性 IsDbGenerated 为 true。我正在使用 sql server 2000。

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

有谁知道为什么会发生此错误以及如何解决?

谢谢

4

6 回答 6

9

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

于 2008-12-11T10:30:48.573 回答
3

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

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

于 2008-12-11T09:59:42.770 回答
2

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

于 2010-10-22T19:18:58.710 回答
1

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

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

于 2008-12-11T09:59:12.427 回答
1

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

于 2011-06-18T20:13:14.120 回答
0

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

于 2013-11-06T14:03:17.753 回答