我需要进行库存控制,所以我需要确保当我修改产品数量时,是以正确的方式进行的。我正在使用实体框架 4.0
例如,如果我使用事务,当我从数据库中加载记录时,记录被阻止,因此我可以减去或添加到加载的数量,即我需要的项目数。但是,这块数据库中的记录可能出于性能原因并不是最好的方法。这让我问何时使用 EF 交易。
另一种选择是使用实体框架的并发固定,使用时间跨度列来检测记录是否已更改。在这种情况下,如果在我的加载和更新之间修改了记录,我会遇到并发异常。但是在我的异常处理程序中,如果我用数据库数据更新我的上下文,在我的刷新和 savechanges 之间可能会再次发生变化。
另一个问题是我终于可以保存更改了。例如,我有 10 个单位,我需要减去 8,但在我的加载和更新之间,其他人减去 5 个单位。如果我减去 8,那么在库存中我有 -3 个单位。这是不可能的。如果我有一个事务,我加载记录,被阻塞,所以我可以检查我是否有足够的单位,如果有,我可以子跟踪,如果没有,我发送一个异常。
所以我的问题是,我知道 EF 本身就是一个事务,但它在 EF 中也存在事务,所以在某些情况下它会很有用。何时使用固定的 EF 和 cocurrency 以及何时使用事务?
谢谢。戴姆洛克。