Ошибка: невозможно использовать объект с ключом, который уже используется, при использовании ExecuteCommand
Я удалил запись, используя ExecuteCommand между вставками Linq to SQL, как показано ниже.
При последнем вызове SubmitChanges я получил ошибку ниже:
Невозможно добавить объект с ключом, который уже используется.
Если я использую Linq to SQL для удаления, у меня нет проблем, но ExecuteCommand
это выпущенный код, поэтому я не могу его изменить.
Как мне снова вставить удаленную запись?
Ниже мой код:
Using db = New SomeDataContext(...)
db.Connection.Open()
db.Transaction = db.Connection.BeginTransaction()
' Insert
db.Student.InsertOnSubmit(New Student() With {.Id = 1, .Name = "a"})
db.SubmitChanges()
' Delete(ExecuteCommand)
db.ExecuteCommand("delete from Student where Id = 1")
db.SubmitChanges()
'' Delete(Linq to SQL)
'db.Student.DeleteOnSubmit(db.Student.Single(Function(m) m.Id = 1))
'db.SubmitChanges()
' Insert
db.Student.InsertOnSubmit(New Student() With {.Id = 1, .Name = "a"})
db.SubmitChanges()
End Using
Я использую Visual Studio 2013 с доступом к SQL Server.