【问题标题】:LINQ to SQL Transaction.Complete vs DataContext.SubmitChangesLINQ to SQL Transaction.Complete vs DataContext.SubmitChanges
【发布时间】:2012-01-27 11:52:32
【问题描述】:

我在程序中有如下结构:

Using transaction As New TransactionScope()

'Make some changes to the data
...

db.SubmitChanges()

'Make some other changes to the data
...

db.SubmitChanges()


transaction.Complete()

End Using

每次调用 SubmitChanges() 时,更改是否会实际保存到数据库中,还是只有 transaction.Complete() 会物理保存它们?我的意思是我不希望 1 个用户所做的中间更改对其他人可见。

【问题讨论】:

  • 您可以通过在transaction.Complete() 之前设置断点来快速尝试。如果你这样做了,你可能会发现任何试图访问你更新的数据的人都不会得到任何结果,直到你调用transaction.Complete(),这取决于我相信默认序列化的隔离级别。因此我怀疑的答案是默认情况下,不,没有用户会得到中间更改,尽管可能取决于isolation levels
  • 查看以下链接以获得答案:stackoverflow.com/questions/542525/…
  • 您只需在例行程序结束时调用一次 SubmitChanges 即可。

标签: .net linq linq-to-sql transactions


【解决方案1】:

SubmitChanges 将发送 DML 语句。 Commit 将提交事务。当事务未提交时,其他读者将看不到您的更改。您没有保存部分更改甚至在一段时间内使它们可见的风险。您可以多次调用 SubmitChanges。如果没有显式事务,SubmitChanges 将在内部使用一个。

【讨论】:

    猜你喜欢
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    相关资源
    最近更新 更多