Linq to sql 自动递增LINQ to SQL DataContext中的主键;插入“;部分法
我想做的是以下几点。我有一个表Products,其中包含一个私钥ProductID。我希望在DataContext分部方法“InsertProduct”中增加ProductID,而不是在INSERT上使用SQL Server自动递增ProductID: 但是,这仅在插入第一个产品实例时有效。尝试插入第二个实例时,检索到的id与第一个实例相同Linq to sql 自动递增LINQ to SQL DataContext中的主键;插入“;部分法,linq-to-sql,Linq To Sql,我想做的是以下几点。我有一个表Products,其中包含一个私钥ProductID。我希望在DataContext分部方法“InsertProduct”中增加ProductID,而不是在INSERT上使用SQL Server自动递增ProductID: 但是,这仅在插入第一个产品实例时有效。尝试插入第二个实例时,检索到的id与第一个实例相同 Using context As New MyDataContext Dim product1 As New Product contex
Using context As New MyDataContext
Dim product1 As New Product
context.Products.InsertOnSubmit(product1)
context.SubmitChanges() 'This works
Dim product2 As New Product
context.Products.InsertOnSubmit(product2)
context.SubmitChanges() 'DuplicateKeyException
End Using
我是否遗漏了一些明显的内容?在上面的代码中,InsertProduct没有声明为分部方法。这是你的帖子中的一个打字错误,还是你声明的签名与要求的签名不同,因此没有被执行
[编辑]我不是VB程序员(我使用C#),但我认为您的代码需要声明代码的部分性以及在设计器中的部分性。无论如何,在C#中也是如此 InsertProduct在设计器生成的文件(MyDataClasses.designer.vb)中声明为分部方法
它被执行了,事实上我可以在InsertProduct中插入一个断点,并观察product1的一切正常运行。对于product2,
context.SubmitChanges()
会引发异常,但未命中断点。我建议让SQL Server进行增量编号。在多用户场景中,如果两个用户都获得相同的ID并尝试插入相同的ID,则即使您确实使其工作,上述方法也会在负载下失败
Using context As New MyDataContext
Dim product1 As New Product
context.Products.InsertOnSubmit(product1)
context.SubmitChanges() 'This works
Dim product2 As New Product
context.Products.InsertOnSubmit(product2)
context.SubmitChanges() 'DuplicateKeyException
End Using