这是一种方法,我们可以逐个在数据库上下文中添加项目以保存数据。
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。 `
答案 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
表现更好。请注意,已处于某个其他状态的上下文中的实体的状态将设置为AddRange
。 Added
对于已在{{1}}州的上下文中的实体