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

  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。
`

最佳答案

另外,您可以使用 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的性能好得多。注意,已经在上下文中处于其他状态的实体将其状态设置为AddedAddRange是已存在于Added状态的上下文中的实体的禁止操作

关于asp.net - 将对象列表添加到Entity Framework中的数据库上下文,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28588684/

10-14 12:35
查看更多