C# 我应该如何处理实体框架中可能大量的编辑?
我首先使用.NET4.5.1和EF6.0.2以及db 用例如下所示:C# 我应该如何处理实体框架中可能大量的编辑?,c#,entity-framework,C#,Entity Framework,我首先使用.NET4.5.1和EF6.0.2以及db 用例如下所示: 大约加载了50k个实体 将为用户显示一组这些实体,其他实体是正确显示项目所必需的 用户可能会对实体执行繁重的操作,这意味着用户选择执行一个级联操作,从而实际影响数百个实体 更改将保存回数据库 那么,问题是,处理这一问题的最佳方式是什么?到目前为止,我已经提出了两种不同的解决方案,但两种都不太喜欢: 在步骤1创建DbContext。在整个过程中保留它,最后保存更改。我不喜欢这样做的原因是,这个过程可能需要几个小时,据我所知,db
如果您在数小时内进行编辑,唯一明智的方法是使用您自己的更改跟踪器,并在更改时使用适当的逻辑-和/或使用逻辑锁定机制(数据库中的标志)。我将使用选项1-在整个过程中使用DbContext 我的问题在于断言
这个过程可能需要几个小时。我不认为这是你想做的事。想象一下,当用户编辑数据3个小时后,在单击最终保存之前面临断电时会发生什么情况。你会有用户用干草叉追你
您还面临许多并发问题——如果两个用户同时执行同一个冗长的过程会怎么样?在几个小时的工作之后处理冲突将是一个问题,特别是如果您告诉用户他们在几个小时前所做的更改无法保存。又是干草叉
因此,我认为您应该使用第3种方法—保存编辑过程中的增量更改,这样在发生错误时用户的工作不会丢失,并且如果两个用户同时更新数据,您可以处理冲突
您可能希望将增量更改保留在单独的位置,而不是主表中,因为业务更改尚未最终确定。希望您将有用户用干草叉跟踪您。