Я пытаюсь найти лучший способ вставить несколько записей (более 200), если они не существуют, не совершая поездки для каждой записи, чтобы проверить, существует ли она, Мне это нравится:Entity Framework Проверьте, существует ли несколько записей перед вставкой
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);
}
}
Каков наилучший способ для этого?
Выполняет ли это все отдельную инструкцию SQL для каждого узла или отправляет ли она все в одном запросе? – blgrnboy
Я не уверен, как Entity Framework обрабатывает AddRange за кулисами. Я считаю, что он должен сделать все это как одну большую транзакцию и сохранить транзакцию при вызове 'context.SaveChanges();' Возможно, вы можете запустить профилировщик SQL и посмотреть, как он обрабатывается на SQL-сервере. –
К сожалению, я хотел получить недостающие записи. Будет ли он отправлять один оператор для каждой записи, которую он проверяет? – blgrnboy