我使用的是.NET 4.5.1和EF6.0.2和db-first。
用例如下所示:
那么,问题是什么是处理这一问题的最佳方法?到目前为止,我已经想出了两种不同的解决方案,但也不太喜欢:
那么,是否有更好的方法来处理这个问题,或者我是否应该使用上面的解决方案之一(可能有一些更改)?
发布于 2014-03-10 08:03:40
我将使用选项1-在整个过程中使用DbContext。
我遇到的问题是断言the process might take hours。我不认为这是你想做的事。想象一下,当用户编辑数据3个小时之后,在单击最终保存之前,会发生什么情况?你会让用户用干草叉追着你。
您还面临许多并发问题--如果两个用户同时执行相同的冗长过程,怎么办?经过几个小时的工作后处理冲突将是一个问题,特别是如果您告诉用户他们几小时前所做的更改无法保存。又是干草叉。
所以,我认为你应该使用数字3-保存编辑过程的增量更改,这样用户的工作就不会丢失,如果发生了一些不好的事情,那么如果两个用户同时更新数据,那么您就可以处理冲突了。
您可能希望将增量更改放在单独的位置,而不是您的主表中,因为业务更改尚未完成。
发布于 2014-03-10 08:00:54
据我所知,DbContexts不应该保存这么久。
哈哈?
数据库上下文中没有关于不保存它的任何内容。您可能会遇到与其他已经编辑过该项的人之间的问题,但是这是一个固有的架构问题--通常在“多小时编辑马拉松”中使用乐观和悲观的锁定是不建议的。
如果您有超过几个小时的编辑,唯一明智的方法是使用您自己的更改跟踪器,并在更改时使用适当的逻辑-和/或使用逻辑锁定机制(数据库中的标志)。
https://stackoverflow.com/questions/22294813
复制相似问题