Я пытаюсь узнать, как использовать инфраструктуру 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(), который читается.
Изменения в базе данных были совершено успешно, но ошибка произошло при обновлении объекта контекст. Объектный объект может находиться в несогласованное состояние. Внутреннее исключение message: AcceptChanges не может продолжаться потому что значения ключа объекта конфликт с другим объектом в ObjectStateManager. Убедитесь, что значения ключа уникальны перед вызовом AcceptChanges.
Мне не удалось выяснить, что вызывает эту проблему.
Таблица моей базы данных содержит три столбца
Id int автоинкремент
Имя nchar (255)
Путь nchar (255)
Обновление: Я проверил, что мой файл edmx и раздел SSDL имеют StoreGeneratedPattern = "Identity", как это было предложено. Я также следил за сообщением в блоге и пытался добавить ClientAutoGenerated = "true" и StoreGenerated = "true" в CSDL, как там было предложено. Это привело к ошибкам компиляции (ошибка 5: атрибут "ClientAutoGenerated" не разрешен.). Поскольку сообщение в блоге с 2006 года, и у него есть ссылка на последующий пост, я предполагаю, что он был изменен.
Тем не менее, я не могу прочитать пост последующего сообщения, так как для него требуется учетная запись msdn.