Ich arbeite an einer C# ASP.NET MVC 5-Webanwendung mit EF 5. Mapping meiner Datenbanktabellen mit EF generiert eine DbContext
Klasse und eine .edmx
Datei. Heute las ich a great article about creating generic DAL classes, aber ich hielt auf dem folgenden Satz:Verwirrende Artikel und Dokumentation über die Unterschiede (falls vorhanden) zwischen System.Data.EntityState.Add & DbSet.Add
Beachten Sie, dass die Eingabemethode mit dem Zustand eines Unternehmens ändern nur die tatsächliche Einheit auswirken, die Sie in der Methode übergeben. Es wird nicht Kaskade durch ein Diagramm und den Zustand aller verwandten Objekte, im Gegensatz zu der DbSet.Add-Methode.
Das widerspricht, was in diesen Fragen erwähnt wird:
- http://forums.asp.net/p/2015170/5803192.aspx
- http://forums.asp.net/p/2060606/5943259.aspx
- Difference between DbSet.Add(entity) and entity.State = EntityState.Added
- What is the difference between IDbSet.Add and DbEntityEntry.State = EntityState.Added?
In all den Antworten der oben genannten Fragen, Alle Benutzer erwähnten, dass die Verwendung von System.Data.EntityState.Added
genau dasselbe ist wie die Verwendung von DbSet.Add
. Aber der Artikel, den ich zuerst erwähnte, besagt, dass die Verwendung von System.Data.EntityState.Added
nicht durch den Graphen kaskadieren wird.
Basierend auf meinem Test, schließe ich, dass mit System.Data.EntityState.Added
kaskadieren durch die Grafik wie im DBset.Add
Fall. Ist der Artikel falsch, oder ist es mein Test und der Q & A?
Sie sagen also, dass die Verwendung von EntityState.Added und die Verwendung von DBset.Add genau gleich sind? –
Ja, wenn Ihre Entität nicht durch einen Kontext verfolgt wird, werden beide Methoden genau dasselbe tun, mit genau dem gleichen Ergebnis, was durch das Testbeispiel und die Exploration des Quellcodes bestätigt wird. – Evk
also sagen wir, die Entität wird durch den Kontext verfolgt, dann werden sie sich unterscheiden? wie du sagtest "wenn deine Entität nicht verfolgt wird ..." –