sagen, dass ich die folgenden Schnipsel habe:Kann ich Async/Await mit dbContext verwenden? Wenn ja, wann sollte ich ConfigureAwait (false) verwenden?
using (var db = new dbContext()){
var user = db.Users.Find(3);
user.Name = "newName";
var viewModel = GetViewModelAndDoStuffToUser(user);
db.SaveChanges();
return viewmodel;
}
nun durch den Einsatz von Asynchron/await, die Leistung dieses Schnipsels in großem Umfang zu verbessern, aber ich habe gelesen, dass DbContext nicht „thread-safe“ Ich versuche es. Also bin ich ein wenig verwirrt über:
- Ob ich
async/await
mit Anrufen über DbContext können - Ob oder nicht sollte ich
.ConfigureAwait(false)
verwenden, wenn ich es tue. Ich habe gelesen, dass dies uns sagt, dass wir den ".NET Context", der von MVC- und WebApi-Controllern benötigt wird, nicht erneut eingeben müssen, aber dies ist die Serviceschicht einer Anwendung, die diese Controller bedient. Ich habe auch gelesen, dass dies Deadlocks verhindert. - Ob oder nicht - in komplizierteren Szenarien - ich Anrufe mit der gleichen Instanz von
dbContext
unter VerwendungTask.WhenAll()
eine skalierbare, Thread-sicheren Schritt in der richtigen Richtung wäre, der folgende Ausschnitt parallelisieren kann?
using (var db = new dbContext()){
var user = await db.Users.FindAsync(3).ConfigureAwait(false);
user.Name = "newName";
var viewModel = await GetViewModelAndDoStuffToUserAsync(user).ConfigureAwait(false);
await db.SaveChangesAsync().ConfigureAwait(false);
return viewmodel;
}
Vielen Dank dafür! Ich habe gerade ein drittes Szenario hinzugefügt, für den Fall, dass Sie einen Moment Zeit haben, es anzugehen. – SB2055
Und - stellt ein 'WebApi Controller' einen" UI Code "dar? Oder sind das nur MVC-Controller/Aktionen? – SB2055
@ SB2055 WebApi Controller benötigt nicht 'ConfigureAwait (true)', nur Desktop-UI benötigt es. – dasblinkenlight