我对乐观的货币例外有些怀疑。
比如说,我从数据库中检索到一些数据,我修改一些登记册,然后提交修改。如果有人在我的请求和更新之间更新登记册信息,我就会得到一个乐观的例外。典型的共通货币问题。
我的第一个疑问是如下。 EF 将决定信息是否被更改,从数据库中检索数据,并将我获得的原始数据与从数据库中检索的数据进行比较。如果存在差异,则会提出乐观的同货币例外。
如果我抓住乐观的货币通货法例外, 我就会决定客户是赢还是商店赢。 在此步骤中, EF 再次检索信息或使用从第一个检索到的数据 。 因为如果再次检索数据, 效率会低 。
第二个疑问是如何控制乐观的货币货币例外。在代码的抓捕区,我决定客户是赢还是商店赢。如果客户是赢,那么我再次呼吁拯救变化。但在决定客户是赢还是储蓄变化之间,其他用户可以改变数据,因此我再次得到一个乐观的货币例外。理论上,这可能是一个无限循环。
使用交易(范围)确保客户更新数据库中的信息是否是一个好主意?其他解决方案可以是使用循环来尝试更新数据的时间,如果不可能的话,退出并告诉用户。
交易会是一个好主意吗? 它会消耗数据库的大量资源吗? 尽管交易区块会占用数据库的片刻时间,但它能确保更新的操作完成。 尝试完成操作的N回路时间圈,可以调用数据库的N次,也许还需要更多的资源。
Thanks. Daimroc.
我忘记问了。 是否有可能设置上下文, 使用客户端默认赢来代替等待通货法例外?