这是一种我们可以在数据库上下文中逐项添加项目以保存数据的方法。
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
的性能好得多。注意,已经在上下文中处于其他状态的实体将其状态设置为Added
。 AddRange
是已存在于Added
状态的上下文中的实体的禁止操作关于asp.net - 将对象列表添加到Entity Framework中的数据库上下文,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28588684/