Linq to sql error with identity increment field

时间:2008-12-11 09:45:32

标签: .net sql linq auto-increment

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

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

  

不正确的自动同步规范   会员'companyID'

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

编辑:自动同步设置为OnIsert。 dataype在TSQL中是BigInt,长在c#中。

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

感谢

6 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

如果可能,请删除数据库并重新创建。我的情况是我忘记在桌面上添加主键。然后在第一次插入进入数据库后,我得到了关于丢失主键的消息。我在dbml designer中手动应用了这个,但是第一个ID已经被用于导致“不正确的自动同步”#39;异常。