Ada*_*dam 14 c# entity-framework entity-framework-6 entity-framework-core
所以,我有一个DBContext,我正在做以下操作:
dbContext.SomeTables1.Add(object1)
dbContext.SomeTables2.AddRange(objectArray2)
dbContext.SomeTables3.AddRange(objectArray3)
dbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
EF不按此顺序插入db记录,它以随机顺序插入它们.要按相同的顺序插入它们,我必须dbContext.SaveChanges()在每次添加后再执行一次.这不是一个有效的解决方案,在我的情况下,我需要10秒钟来完成所有插入,而一次保存的随机顺序大约需要3秒.
NB我需要正确的命令来解决死锁问题.
我的问题是:
- 这个问题在EF7中解决了吗?
- 我可以对EF进行概要分析并确定随机顺序,但是,是否可以保证它与相同的随机顺序保持一致,还是在请求之间进行更改?(如果这个问题的答案是肯定的,我可以采用我的其他代码).
- 维持订单是否有比
dbContext.SaveChanges()每次添加更好的方法?
当您调用SaveChanges时,所有实体都按照"ProduceDynamicCommands"方法中的内部顺序排序,然后通过方法"TryTopologicalSort"再次排序,该方法循环添加没有前任左侧的命令(如果添加A和B,A依赖于B,那么B将在A)之前插入
您可以通过批量添加进行插入.
由于执行插入需要3秒钟,我将假设您有数千个实体并且执行批量插入可以提高您的性能,将10秒减少到更少,然后可能是最初的3秒!
这里有2个我可以推荐的库:
免责声明:我是Entity Framework Extensions项目的所有者.