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

时间:2009-12-03 16:17:32

标签: linq-to-sql transactions

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

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

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

我们在哪里弄错了?如何在同一个交易中处理删除和重新插入?显然我们可以在删除后提交SubmitChanges(),但这不会将它放在同一个事务中。

有什么想法吗?任何模式?您是否需要实际的源代码才能继续?

1 个答案:

答案 0 :(得分:2)

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

t = db.Connection.BeginTransaction();
db.Transaction = t;
DeleteOnSubmit();
SubmitChanges();
InsertOnSubmit();
SubmitChanges();
t.Commit();