Я хочу прокрутить коллекцию объектов и добавить их все в таблицу. Таблица назначения имеет поле автоматического увеличения. Если я добавлю один объект, проблем нет. Если я добавлю два объекта как с первичным ключом, равным нулю, инфраструктура сущности завершается с ошибкой. Я могу вручную указать первичные ключи, но все, что нужно, чтобы попробовать EF, было сделать жизнь проще не сложнее. Ниже приведен код и полученное исключение.Autonumber with Entity Framework
foreach (Contact contact in contacts)
{
Instructor instructor = InstructorFromContact(contact);
context.AddToInstructors(instructor);
}
try
{
context.SaveChanges();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Ошибка:
System.InvalidOperationException: Изменения в базе данных были совершены успешно, но произошла ошибка при обновлении контекст объекта. Объект ObjectContext может находиться в несогласованном состоянии. Внутреннее сообщение об исключении: AcceptChanges не может продолжаться, поскольку значения ключа объекта конфликтуют с другим объектом в объекте ObjectStateManager . Убедитесь, что значения ключа уникальны до , вызывающих AcceptChanges. в System.Data.Objects.ObjectContext.SaveChanges (варианты SaveOptions)
на System.Data.Objects.ObjectContext.SaveChanges() в DataMigration.Program.CopyInstructors() в C: \ Projects \ DataMigration \ Program.cs : строка 52
Я предполагаю, что если вы просто оставить поле пустым Autonumber, база данных будет назначить для вас, когда вы совершаете. –
Да, он работает, он добавляет записи и назначает первичные ключи, проблема в том, что я не должен получать исключение для такого типичного сценария. Я уверен, что есть «правильный» способ сделать это в рамках, просто не уверен, как это сделать. – dcompiled
Ну, теперь исключение перестало быть брошенным после того, как я внесла некоторые изменения в таблицу и обновил модель. Не уверен, что изменило ситуацию. Единственные изменения, которые я сделал, это добавить некоторые значения по умолчанию для столбцов и установить для этих столбцов значение не равно нулю. Не уверены, что изменения связаны с исключением. – dcompiled