Entity Framework插入前检查是否存在多条记录
Entity Framework Check if multiple records exist before insert
我正在尝试找出插入多条记录(超过 200 条)的最佳方法(如果它们不存在),而无需为每条记录进行一次旅行以检查它是否存在,我这样做是这样的:
foreach (var node in nodes)
{
if (!context.Nodes.Any(x => x.Name == node.Name))
{
context.Nodes.Add(new NWatchNode(node));
}
try
{
if (context.Nodes.Local.Any())
{
context.SaveChanges();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
最好的方法是什么?
假设 node.Name
在数据库的 table 中是唯一的,您可以这样做将节点列表缩小到不存在的节点:
var missingRecords = nodes.Where(x => !context.Nodes.Any(z => z.Name == x.Name)).ToList();
然后插入缺少的记录,如:
context.Nodes.AddRange(missingRecords);
我正在尝试找出插入多条记录(超过 200 条)的最佳方法(如果它们不存在),而无需为每条记录进行一次旅行以检查它是否存在,我这样做是这样的:
foreach (var node in nodes)
{
if (!context.Nodes.Any(x => x.Name == node.Name))
{
context.Nodes.Add(new NWatchNode(node));
}
try
{
if (context.Nodes.Local.Any())
{
context.SaveChanges();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
最好的方法是什么?
假设 node.Name
在数据库的 table 中是唯一的,您可以这样做将节点列表缩小到不存在的节点:
var missingRecords = nodes.Where(x => !context.Nodes.Any(z => z.Name == x.Name)).ToList();
然后插入缺少的记录,如:
context.Nodes.AddRange(missingRecords);