Ошибка: невозможно использовать объект с ключом, который уже используется, при использовании 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.

0 ответов

Другие вопросы по тегам