У меня возникла проблема со вставками в EF 4.0.
Во время миграции из одной системы в другую я переносил значения трех таблиц конфигурации в базу данных, созданную EF.
Сбой следующего кода:
foreach (MyModel model in models)
{
if(entities.my_Model.Where(p => p.Id == model.modelId).Count() == 0 )
{
entities.AddTo_MyModel(new MyModel()
{Name = model.Name, Id = model.modelId});
}
}
entities.SaveChanges();
Обратите внимание, что вызов SaveChanges завершится с ошибкой ограничения, указывающей на то, что значение ID (PK) уже существует. Я не пытаюсь вставить дубликаты.
Следующий код DOES работает правильно.
foreach (MyModel model in models)
{
if(entities.my_Model.Where(p => p.Id == model.modelId).Count() == 0 )
{
entities.AddTo_MyModel(new MyModel()
{Name = model.Name, Id = model.modelId});
entities.SaveChanges();
}
}
Обратите внимание на перемещенное сохранение.
Есть что-то, чего я принципиально не понимаю в EF?