InvalidOperationException podczas wywoływania SaveChanges w środowisku .NET Entity
Próbuję nauczyć się korzystać ze środowiska Entity, ale trafiłem na problem, którego nie mogę rozwiązać. Co robię, to przechodzę przez listę filmów, które mam i wstawiam każdą z nich do prostej bazy danych.
To jest kod, którego używam
<code>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(); } </code>
Gdy to zrobię, otrzymuję wyjątek w pliku db.SaveChanges (), który odczytuje.
Zmiany w bazie danych zostały pomyślnie zatwierdzone, ale wystąpił błąd podczas aktualizowania kontekstu obiektu. Obiekt ObjectContext może być w niespójnym stanie. Komunikat o wyjątku wewnętrznym: AcceptChanges nie może być kontynuowany, ponieważ wartości kluczy obiektu powodują konflikt z innym obiektem w ObjectStateManager. Upewnij się, że wartości klucza są unikalne przed wywołaniem AcceptChanges.
Nie byłem w stanie dowiedzieć się, co powoduje ten problem. Moja tabela bazy danych zawiera trzy kolumny
Id int autoincrement
Nazwa nchar (255)
Ścieżka nchar (255)
Aktualizacja: Sprawdziłem mój plik edmx, a sekcja SSDL ma StoreGeneratedPattern = „Tożsamość” zgodnie z sugestią. Podążyłem też za postem na blogu i próbowałem dodać ClientAutoGenerated = "true" i StoreGenerated = "true" w CSDL, zgodnie z sugestią. Spowodowało to błędy kompilacji (błąd 5: atrybut „ClientAutoGenerated” nie jest dozwolony.). Ponieważ wpis na blogu pochodzi z 2006 r. I zawiera link do posta kontrolnego, zakładam, że został zmieniony.
Nie mogę jednak odczytać postu, ponieważ wydaje się, że wymaga on konta msdn.