Erstellt Entity Framework beim Erstellen einer neuen Instanz von DbContext
eine neue Verbindung zur Datenbank?Entity Framework 5 DbContext und Verbindungen
Antwort
Stimmen Sie mit der DavidG überein, No es ist keine Verbindung an diesem Punkt erstellt.
Anschluss werden beibehalten, nur wenn Savechanges() genannt wird
alle an Ihrem entities
Änderungen, sei es updates, inserts or deletes
, werden nur in der Datenbank beibehalten, wenn die DbContext.SaveChanges()
Methode aufgerufen wird. Wenn eine DbContext
Instanz verworfen wird, bevor die Methode aufgerufen wurde, wird keiner der inserts, updates or deletes
, die über diese DbContext
ausgeführt wurden, im Datenspeicher beibehalten.
nehmen also diesen Code als Beispiel:
var context = new MyContext();
var cars = context.Cars.Where(c => c.TopSpeed > 100);
var carList = cars.ToList(); //Connection will probably happen here
Wo ist eine Verbindung initiiert? Es gibt tatsächlich 2 Möglichkeiten. In der Regel wird immer nur eine Verbindung in der letzten Zeile erstellt. Das Instanziieren eines Kontexts hat keine Nebenwirkungen, und die mittlere Zeile verwendet eine verzögerte Ausführung, sodass noch keine Verbindung erforderlich ist.
Sie können jedoch feststellen, dass in der zweiten Zeile eine Verbindung erstellt wird. Dies passiert, wenn Ihre App zum ersten Mal hochfährt und Entity Framework ausgeführt werden muss und bestätigt, dass Ihre Datenbank dem entspricht, was sie erwartet Sein. Sie können dies deaktivieren, indem Sie den Initialisierer deaktivieren, z. B .:
Database.SetInitializer<MyContext>(null);
Wie wäre es mit dem Schreiben in die Datenbank? Nun, Sie haben etwas Ähnliches passiert, aber diesmal das einzige Mal, wenn eine Verbindung benötigt wird, ist, wenn Sie anrufen SaveChanges
:
var context = new MyContext();
var ferarri = new Car { Name = "Ferarri", TopSpeed = 170 };
context.Cars.Add(ferarri);
context.SaveChanges(); //Connection will probably happen here
Ist das alles? Also nein, werden Sie auch eine neue Verbindung, wenn Sie eine Transaktion starten:
//Database connection will be opened here
using (var transaction = context.Database.BeginTransaction())
{
var cars = context.Cars.Where(c => c.TopSpeed > 100);
var carList = cars.ToList();
}
- 1. Entity Framework - DbContext SaveChanges()
- 2. Entity Framework 7 DbContext Scaffold
- 3. Entity Framework: DbContext und Festlegen des Providernamens
- 4. Entity Framework Core DbContext und Dependency Injection
- 5. Entity Framework 4.3.1 DBContext-Verbindung
- 6. C# Entity Framework 4.3 DbContext
- 7. Arbeitseinheit, Entity Framework DbContext Scope
- 8. LoadProperty in Entity Framework 5
- 9. Entity Framework DbContext in der Azure-Webrolle
- 10. Verwendung von DBContext mit Entity Framework
- 11. Entity Framework DbContext Lifetime in Worker-Rolle
- 12. Entity Framework DbContext-Konstruktor mit Verbindungszeichenfolge
- 13. Generics in DBContext mit Entity Framework
- 14. Entity Framework Core und Multithreading
- 15. Zwischengespeicherte Abfragen mit Entity Framework 5
- 16. Entity Framework und mehrere Schemas
- 17. Force-Entity Framework 5 datetime2 Datentyp
- 18. Entity Framework 5 und XElement Felder
- 19. Entity Framework-Beziehungen zwischen verschiedenen DbContext und verschiedenen Schemas
- 20. Entity Framework 5 Enum Naming
- 21. Entity Framework 5 InvalidOperationException beim Reload
- 22. Entity Framework 7 und ASP MVC 5 - einfache Aufgaben
- 23. Postgresql und Entity Framework
- 24. Entity Framework 5 - Aktualisieren Sie sofort DbContext nach dem Speichern von Änderungen
- 25. Entity Framework 5.0 Beta - wird eine DbContext-Codegenerierungsvorlage bereitgestellt?
- 26. Entity Framework DbContext überschreiben SaveChanges für jedes Modell
- 27. Entity Framework - mit dem gleichen DbContext mit verschiedenen Verbindungszeichenfolgen
- 28. DbContext -> DbSet -> Where-Klausel fehlt (Entity Framework 6)
- 29. Wie Dependency Injection mit Entity Framework DbContext verwenden?
- 30. Unit Testing und Entity Framework
Dies kann hilft .. [DbContext] (http://mehdi.me/ambient-dbcontext-in-ef6/) –