【问题标题】:Which is better to use for adding IEnumerable object?哪个更好用于添加 IEnumerable 对象?
【发布时间】:2015-04-23 05:39:53
【问题描述】:

我找到了两种在存储库模式中实现对 IEnumerable 对象的添加操作的方法。

首先是使用 .AddRange() 并在此处传递列表。或者 其次是将我的列表转换为数组并使用.AddOrUpdate(ArrayObject)

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

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

或者

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

【问题讨论】:

    标签: asp.net repository-pattern dbcontext


    【解决方案1】:

    AddOrUpdate 可以使用新对象数组调用,因此您只需创建一个 City[] 类型的数组并调用 context.CitySet.AddOrUpdate(cc => cc.Id, cityArray) ;一次。在生成的 SQL 中,应该有 Where 条件。

    在性能方面,您想阅读以下内容

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

    然后看看:

    context.BulkInsert(hugeAmountOfEntities);
    

    【讨论】:

    • 感谢@Web World,我在尝试实现这一点时已经通过了这个方法。使用 BulkInsert 真的很公平。但是我想知道当我在 AddOrUpdate 与数组或 AddRange() 之间进行比较时哪个更可取。
    • @Neha 您可以检查两者的生成 SQL(使用 SQL Profiler 或 VS 调试窗口)并获得想法。正如我所说,AddOrUpdate 应该在 SQL 命令中包含 Where,所以 AddRange 应该更好但不确定。
    • 我发现两个 sqlcommand 都有 Where。请您进一步说明您在 sql 命令中的位置是什么意思。我的意思是我必须研究的差异。
    • 比较两个生成的 SQL,如果两者相同,那么 AddOrUpdate 和 AddRange 在您的情况下都是相同的。
    • 好的,我有相同的 sql。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    相关资源
    最近更新 更多