假设我有一个银行帐户表,其中包含customer_id,name,address和balance列。由于客户存款和取款,余额不断变化。如何在不同时获得DBConcurrencyException的情况下访问客户的地址?
在这种情况下的一般方法是什么,两个用户不可能更改表行中的SAME单元格,但是它们可以更改同一行中的不同单元格并使用新值更新行而没有问题?
答案 0 :(得分:0)
您应该查看包含详细信息的链接http://blog.sqlauthority.com/2008/08/18/sql-server-detailed-explanation-of-transaction-lock-lock-type-avoid-locks/。
答案 1 :(得分:0)
我不确定您是否使用LINQ,但如果您是,那么您应该看看它是如何处理并发的。 LINQ使用乐观并发。因此,基本上如果用户尝试更新记录,并且记录已在过渡期间更新,则会发生并发冲突。
但是,您可以决定LINQ表中的哪些属性用于并发检查 - 在这种情况下,LINQ将不关心该记录中的值是否已更改。
还有一些处理异常的方法 - 您可以在异常周围放置一个try块 - 并编写一些代码来处理不同的场景。