我正在使用 DAL 服务从数据库中检索数据。
让我们观察最简单的情况,即我从数据库中检索一个对象。
检索该对象后,我正在根据某些业务逻辑对其属性进行一些更改,然后我想更新持久数据库中的对象。
但是,其他一些客户端(甚至可能是我不知道存在的客户端)更改了数据库中下划线对象的状态,我在尝试更新时发现了这一点。
在这种情况下我该怎么办?
我应该抛出异常吗?
我应该尝试只更新我更改的字段吗?
在基于持久数据执行业务逻辑时,是否应该锁定该表以进行写入?
盖伊
我正在使用 DAL 服务从数据库中检索数据。
让我们观察最简单的情况,即我从数据库中检索一个对象。
检索该对象后,我正在根据某些业务逻辑对其属性进行一些更改,然后我想更新持久数据库中的对象。
但是,其他一些客户端(甚至可能是我不知道存在的客户端)更改了数据库中下划线对象的状态,我在尝试更新时发现了这一点。
在这种情况下我该怎么办?
我应该抛出异常吗?
我应该尝试只更新我更改的字段吗?
在基于持久数据执行业务逻辑时,是否应该锁定该表以进行写入?
盖伊
我认为你应该做什么取决于你想要达到的目标。在我看来,您的主要选择:
预先锁定- 主要优点和缺点 - 在您提交之前占用数据库,更简单。
不要预先锁定,合并以防其他人更新它- 主要缺点 - 合并可能非常复杂
我会选择第一个,但我会尽量减少锁定时间(即我会弄清楚在锁定对象之前我想要做的所有更改是什么)。
无论如何,我不认为这是一个例外情况..所以我不会抛出异常。
这是非常主观的,它取决于你到底想要做什么。
我应该抛出异常吗?
我应该尝试只更新我更改的字段吗?
在基于持久数据执行业务逻辑时,是否应该锁定该表以进行写入?