2015-04-23 61 views
0

我发现了两种方法来实现对存储库模式中的IEnumerable对象的添加操作。哪个更适合添加IEnumerable对象?

首先是使用。 AddRange() &通过这里的列表。或者 二是将我的列表转换为阵列&使用.AddOrUpdate(ArrayObject)

如果我的意图是要删除IEnumerable项目上的foreach循环,哪个更好?请帮忙。

_context.DbSet<MyEntity>().AddOrUpdate(entities.ToArray()); 

或者

_context.DbSet<MyEntity>().ToList().AddRange(entities); 

回答

0

AddOrUpdate可以用新对象的数组被调用,所以你可以创建型城市[]数组并调用context.CitySet.AddOrUpdate(CC = > cc.Id,cityArray);一旦。在生成的SQL中,应该有Where条件。

在性能的情况下,你想阅读下列

https://stackoverflow.com/a/21839455/194345

,看看下面:

context.BulkInsert(hugeAmountOfEntities); 
+0

感谢@Web世界,我已经通过这个走了的方式,当我试图执行此操作。使用BulkInsert真的很公平。但是我想知道在AddOrUpdate与数组或AddRange()之间进行比较时哪个更可取。 – Neha

+0

@Neha你可以检查两者的生成SQL(使用SQL事件探查器或VS调试窗口),并得到想法。正如我所说,AddOrUpdate应该有SQL命令中的Where,所以AddRange应该更好但不确定。 – Brij

+0

我发现两个sqlcommand都有Where。请您详细说明您在sql命令中的含义。我的意思是我必须研究的差异。 – Neha