2015-04-23 38 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