将对象列表添加到Entity Framework中的DB上下文

时间:2015-02-18 16:31:25

标签: asp.net asp.net-mvc entity-framework entity-framework-5 entity-framework-6

这是一种方法,我们可以逐个在数据库上下文中添加项目以保存数据。

  List<AuditTrails> auditLogs= new List<AuditTrails>();

  foreach (AuditTrail a in auditLogs)
  {
      if (a.Operation == CreatedBy)
      {
         if (!string.IsNullOrEmpty(a.NewState))
             context.AuditTrails.Add(a);
      }
      else
         context.AuditTrails.Add(a);
  }
  context.SaveChanges();

没有循环可以做什么?我正在使用Entity Framework 6。                 `

2 个答案:

答案 0 :(得分:3)

技术上,不,但我认为,您可以通过ForEach的{​​{1}}方法了解您所寻找的内容。

List

答案 1 :(得分:2)

此外,您可以使用AddRange方法,但首先您必须按照@ChrisPratt在其答案中建议过滤您的收藏:

var elementsToBeAdded=auditLogs.Where(a => (a.Operation == CreatedBy && !string.IsNullOrEmpty(a.NewState)) || 
                                            a.Operation != CreatedBy);
context.AuditTrails.AddRange(elementsToBeAdded);

如果AutoDetectChangesEnabled设置为true(默认值),则在添加任何实体之前将调用DetectChanges一次,并且不会再次调用AddRange。这意味着在某些情况下Add可能会比多次调用Added表现更好。请注意,已处于某个其他状态的上下文中的实体的状态将设置为AddRangeAdded对于已在{{1}}州的上下文中的实体

是无操作的