实体框架在插入之前检查是否存在多个记录

本文关键字:存在 是否 记录 检查 框架 插入 实体 | 更新日期: 2023-09-27 18:19:25

如果多个记录(超过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在数据库的表中是唯一的,您可以这样做,将节点列表缩小到不存在的节点:

var missingRecords = nodes.Where(x => !context.Nodes.Any(z => z.Name == x.Name)).ToList();

然后插入缺失的记录,类似于:

context.Nodes.AddRange(missingRecords);