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 :
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; }
}
In früheren EF-Versionen (z. B. 2.2) konnte Folgendes getan werden:
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();
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:
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();
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!
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 :
[code]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]
In früheren EF-Versionen (z. B. 2.2) konnte Folgendes getan werden:
[code]var book = new Book();
context.Books.Add(book);
context.SaveChanges();
book = context.Books.First();
var author = new Author();
book.Authors.Add(author);
context.SaveChanges();
[/code]
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:
[b]'Es wurde versucht, eine Entität zu aktualisieren oder zu löschen, die nicht im Store vorhanden ist.'[/b]
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] 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();
[/code]
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!