2016-09-27 4 views
0

Ich habe einen Datenkontext in meiner Anwendung mit vielen Threads, die darauf schreiben. So wird der Inhalt, den es hält, immer größer und wenn ich Änderungen speichere, bleibt der Kontext (wie erwartet) so groß.EntityFramework DataContext erhält SaveChanges wird langsamer nach einiger Zeit

Aufgrund dessen wird die SaveChanges-Dauer immer länger.

Gibt es Optionen, um den Kontext der vorgenommenen Änderungen zu bereinigen und so zu speichern, dass die Leistung wieder ansteigt?

Das Einzige, woran ich gerade dachte, war, es nach einiger Zeit neu zu installieren, indem ich meine Hauptdatenkontextinstanz neu installierte.

Grüße,

Tim

Antwort

2

DbContext ist so konzipiert, ein kurzlebiges Objekt zu sein. Sie sollten es erstellen, verwenden und so schnell wie möglich entsorgen.

using (var context = new YourContext()) 
{ 
    //do your stuffs 

    //call save changes 
    context.SaveChanges(); 
} 

//let the using block dispose the context when exit. 

Wie alles relativ ist, vielleicht erfordert Ihr Szenario mehr denken. Here ist ein guter Beitrag, den ich empfehlen würde, mehr darüber zu wissen, wie man die Datenkontextlebenszeit richtig behandelt.

+0

danke für Ihre Antwort. Haben Sie Vorschläge, wie Sie Daten effizient und effizient in einer Datenbank speichern können (wie zB aus der Sensorik)? Wenn der Datenkontext immer nur sehr kurzlebig ist, da er eine Tabelle pro Typ Hirachy verwendet, würde er redundant die gleichen Daten immer wieder lesen, um die tatsächlich neuen Daten hinzuzufügen. – Ravior

+0

@Ravior, gern geschehen. Ich denke, ich habe nicht genug Wissen über Ihr Problem, aber ich kann Ihnen sagen, dass ich kurzlebige Instanzen verwendet habe, um ein Benachrichtigungssystem zu erstellen, und ich habe Stapel erstellt und Einfüge- und Aktualisierungsvorgänge alle 30 Sekunden asynchron gesendet vermeide es, ständig in den Kontext zu schreiben. Und es funktioniert soweit großartig. –

Verwandte Themen