我正在使用 DAL 服务从数据库中检索数据。
让我们观察最简单的情况,我从数据库中检索一个对象。
在检索到该对象后,我根据一些业务逻辑对其属性进行了一些更改, 而且我想更新持久数据库中的对象。
但是,其他一些客户端(甚至可能是我不知道的客户端)更改了数据库中下划线对象的状态,我在尝试更新时识别了这一点。
遇到这种情况我该怎么办?
我应该抛出异常吗?
我应该尝试只更新我更改的字段吗?
当我基于持久数据执行业务逻辑时,是否应该锁定该表以进行写入?
家伙
最佳答案
我认为你应该做什么取决于你想要达到的目标。 我认为您的主要选择:
预先锁定 - 主要优点和缺点 - 在提交之前占用数据库,这要简单得多。
不要预先锁定,合并以防其他人更新它 - 主要缺点 - 合并可能非常复杂
我会选择第一个,但我会尝试最小化锁定时间(即我会找出我想做的所有更改在锁定对象).
无论如何我不认为这是一个异常(exception)情况..所以我不会抛出异常。
关于数据库并发 - 处理不同步的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18757205/