Linq to sql 如何使用Linq事务删除和插入具有相同主键的记录

Linq to sql 如何使用Linq事务删除和插入具有相同主键的记录,linq-to-sql,transactions,Linq To Sql,Transactions,我们在数据库中有一个表,它表示我们网页中的一组div。每个div都有一个像素宽度、高度、顶部和左侧,保存为表中的单个记录。它有一个主键。我们将表中的所有div加载到web页面,用户重新排列squre,然后在单个事务中使用Linq“OnSubmit”方法将修改后的sque保存回表中 我们的问题是删除所有方块,然后重新插入所有方块。如果没有事务,这一切都很好。对于事务,它会标记所有要删除的记录,然后插入实际上会更新已标记为要删除的记录。最后,一些方块丢失了 我们先执行DeleteOnSubmit()

我们在数据库中有一个表,它表示我们网页中的一组div。每个div都有一个像素宽度、高度、顶部和左侧,保存为表中的单个记录。它有一个主键。我们将表中的所有div加载到web页面,用户重新排列squre,然后在单个事务中使用Linq“OnSubmit”方法将修改后的sque保存回表中

我们的问题是删除所有方块,然后重新插入所有方块。如果没有事务,这一切都很好。对于事务,它会标记所有要删除的记录,然后插入实际上会更新已标记为要删除的记录。最后,一些方块丢失了

我们先执行DeleteOnSubmit(),然后执行InsertOnSubmit(),最后执行.SubmitChanges()

我们在哪里犯错误?如何处理删除和重新插入同一事务中的所有内容?显然,我们可以在删除后提交changes(),但这不会将其放在同一事务中


有什么想法吗?有图案吗?是否需要实际的源代码才能继续?

我们建议您自己打开事务,并在必要时提交
在这种情况下,内部事务将不会打开

t = db.Connection.BeginTransaction(); db.Transaction = t; DeleteOnSubmit(); SubmitChanges(); InsertOnSubmit(); SubmitChanges(); t.Commit(); t=db.Connection.BeginTransaction(); db.Transaction=t; deleteoSubmit(); 提交更改(); InsertOnSubmit(); 提交更改(); t、 提交();
为什么你不只是更新数据?删除/插入似乎是浪费时间。此外,主键是自动生成的还是手动创建的?这些键不是自动生成的。网页返回要保存的方块。我想我们可以使用RAM中的记录删除返回的内容的补码。方块也由多个用户操作,但是方块有颜色,我们一次只改变一种颜色。这看起来很有趣,这正是我正在做的,但是删除不起作用。如果我删除了7条记录并插入了6条记录,我仍然保留了7条记录。没有引发错误。请向我们发送测试项目,以便通过复制问题。