Mit einem einzigen Zusammenhang, aus vielen threads in Entity Framework 6

Gibt es eine Möglichkeit, verwenden Sie eine dbContext in verschiedenen threads asynchron?

 var context = new Entities();
 Task.Factory.StartNew(() => context.Companies.Include(x => x.Address).First());
 Task.Factory.StartNew(() => context.Companies.Include(x => x.Owner).First());
 //after some changes...
 context.SaveChanges();
 context.Dispose();

Die Idee dabei ist, speichern Sie alles auf einmal, und wenn etwas nicht wieder alles ändert.
In der Realität bin ich mit Unit of Work-Objektes, welches übergeben wird, viewmodel und Ihr Kind viewmodels so dass Sie versuchen, an Informationen zu kommen asynchron... Der code oben zeigt das problem.
Der obige code löst eine Ausnahme:

Eine Ausnahme des Typs " System.InvalidOperationException' ist in EntityFramework.dll wurde aber nicht behandelt werden, in Benutzer-code
Der Kontext kann nicht verwendet werden, während das Modell erstellt wird. Diese Ausnahme kann ausgelöst werden, wenn der Kontext innerhalb der OnModelCreating Methode oder, wenn das gleiche context-Instanz ist, auf die mehrere threads gleichzeitig zugreifen. Beachten Sie, dass die Instanz, Mitglieder der DbContext und Verwandte Klassen nicht garantiert werden, um thread-safe.

Das Hauptproblem ist, wenn ich möchte mehrere Instanzen von DbContext jede der Daten-Transfer-Objekt enthält verschiedene Informationen für die Felder.
Irgendwelche Vorschläge?
Danke!

InformationsquelleAutor user3049133 | 2013-12-18
Schreibe einen Kommentar