Я пытаюсь научиться использовать платформу Entity, но столкнулся с проблемой, которую не могу решить.
Что я делаю, так это то, что я прохожу список моих фильмов и вставляю каждый из них в простую базу данных.
Это код, который я использую
private void AddMovies(DirectoryInfo dir)
{
MovieEntities db = new MovieEntities();
foreach (DirectoryInfo d in dir.GetDirectories())
{
Movie m = new Movie { Name = d.Name, Path = dir.FullName };
db.AddToMovies(movie);
}
db.SaveChanges();
}
Когда я делаю это, я получаю исключение в db.SaveChanges (), которое читает.
Изменения в базе данных были
совершено успешно, но ошибка
произошло при обновлении объекта
контекст. ObjectContext может быть в
противоречивое состояние. Внутреннее исключение
сообщение: AcceptChanges не может продолжаться
потому что ключевые значения объекта
конфликт с другим объектом в
ObjectStateManager. Убедитесь, что
ключевые значения уникальны перед вызовом
AcceptChanges.
Мне не удалось выяснить, что является причиной этой проблемы.
Моя таблица базы данных содержит три столбца
Id int autoincrement
Имя нчар (255)
Путь nchar (255)
Обновление:
Я проверил мой файл edmx и раздел SSDL имеет StoreGeneratedPattern = "Identity", как было предложено. Я также последовал за публикацией в блоге и попытался добавить ClientAutoGenerated = "true" и StoreGenerated = "true" в CSDL, как это предлагалось там. Это приводило к ошибкам компиляции (Ошибка 5: Атрибут «ClientAutoGenerated» не допускается.). Поскольку сообщение в блоге с 2006 года содержит ссылку на последующее сообщение, я предполагаю, что оно было изменено.
Однако я не могу прочитать последующее сообщение, так как для него требуется учетная запись msdn.