Пожалуйста, рассмотрите этот сценарий:
У меня есть две таблицы: Temp
и Convert
.Структура этих двух таблиц точно такая же.Я хочу сделать некоторые операции с каждой записью Temp
и добавить ее в таблицу Convert
.Выполняя мою работу, в таблице Convert
могут быть повторяющиеся записи, поэтому я не хочу вставлять эту запись в таблицу Convert
.Я написал этот код:
foreach (var item in allRecords)
{
var converted = new Convert()
{
F1 = item.F1,
F2 = item.F2,
F3 = DoWork(F3),
};
try
{
context.Convert.AddObject(converted);
context.SaveChanges();
}
catch (Exception ex)
{
var msg = "Violation of PRIMARY KEY constraint 'PK_Convert'."
+ " Cannot insert duplicate key":
if (ex.InnerException.Message.Contains(msg))
{
continue;
}
else
{
throw ex;
}
}
}
проблема в том, что когда я получаю исключение для первого дубликата и continue
выполненная команда, кажется, что дублирующаяся запись не сбрасывается и все еще ожидает сохранения.После первого исключения No Нет записей в базе данных из-за моей первой ошибки дублирования.Как я могу решить эту проблему, не проверяя наличие повторяющейся ошибки в таблице Convert
? 1014 *
Спасибо