In einem meiner Controller, ich habe ein Asynchron-Methode, die ein paar db Anrufe gleichzeitig zu machen hat, so dass ich es wie folgt auf:EF Core DBContext im Controller für Multithreading erstellen?
public xxxController(IConfiguration configuration, xxxContext xxxContext, xxx2Context xxx2Context)
: base(xxxContext)
Ich speichere die Kontexte, die injiziert werden. In dem besonderen Verfahren:
var v = await Task.WhenAll(...)
Innerhalb des WhenAll, muß ich die xxxContext für jedes Element verwenden, so dass ich das nicht-Thread-sicher Ausnahme.
Was ist der richtige Weg, um einen neuen DbContext zu erstellen? Im Moment ist ich tun:
var v = new DbContextOptionsBuilder<xxxContext>();
v.UseSqlServer(_xxxContext.Database.GetDbConnection().ConnectionString);
xxContext e = new xxContext(v.Options);
So bin ich die Verbindungszeichenfolge aus dem bestehenden Kontext erhalten, die injiziert wurde, und verwendet, um einen neuen zu erstellen.
Die Verbindungszeichenfolgen werden in appSettings.json gespeichert. Im Abschnitt "ConnectionStrings".
Gibt es eine sauberere Möglichkeit, die Kontexte für Multithreading zu erstellen?