Es wurde versucht, eine Entität zu aktualisieren oder zu löschen, die nicht im Store vorhanden ist
Posted: 03 Jan 2025, 10:28
Ich habe ein Problem mit den Navigationseigenschaften von EF Core 3.x und One-To-Many, die ich in früheren Versionen nicht hatte.
Bedenken Sie den folgenden Code :
In früheren EF-Versionen (z. B. 2.2) konnte Folgendes getan werden:
Jetzt löst derselbe Code nach dem Update auf EF Core 3.x beim letzten SaveChanges()-Aufruf die folgende Ausnahme aus, und ich kann es wirklich nicht herausfinden Warum:
'Es wurde versucht, eine Entität zu aktualisieren oder zu löschen, die nicht im Store vorhanden ist.'
Wenn ich den ChangeTracker von DbContext überprüfe, dann tatsächlich Achten Sie darauf, dass die Entität „Autor“ als „Geändert“ und nicht als „Hinzugefügt“ markiert ist.
Das Folgende funktioniert jedoch einwandfrei:
Was ist los? Ich habe über möglicherweise bahnbrechende Änderungen in 3.x gelesen, konnte aber keine Erwähnung/Lösung für dieses Problem finden. Hat jemand eine Idee?
Vielen Dank im Voraus!
Bedenken Sie den folgenden Code :
Code: Select all
public class Book
{
public Book()
{
this.Id = Guid.NewGuid();
this.Authors = new List();
}
public virtual Guid Id { get; protected set; }
public virtual ICollection Authors { get; set; }
public void AddAuthor(Author author)
{
author.BookId = this.Id;
this.Authors.Add(author);
}
}
public class Author
{
public Author()
{
this.Id = Guid.NewGuid();
}
public virtual Guid Id { get; protected set; }
public virtual Guid BookId { get; set; }
public virtual Book Book { get; set; }
}
Code: Select all
var book = new Book();
context.Books.Add(book);
context.SaveChanges();
book = context.Books.First();
var author = new Author();
book.Authors.Add(author);
context.SaveChanges();
'Es wurde versucht, eine Entität zu aktualisieren oder zu löschen, die nicht im Store vorhanden ist.'
Wenn ich den ChangeTracker von DbContext überprüfe, dann tatsächlich Achten Sie darauf, dass die Entität „Autor“ als „Geändert“ und nicht als „Hinzugefügt“ markiert ist.
Das Folgende funktioniert jedoch einwandfrei:
Code: Select all
var book = new Book();
context.Books.Add(book);
context.SaveChanges();
book = context.Books.First();
var author = new Author() { BookId = book.Id };
context.Authors.Add(author);
context.SaveChanges();
Vielen Dank im Voraus!