In asp.net 5/core Ich möchte ein Element aus meinem db mit einer Verzögerung mit async löschen. Ich verwende DI, um meinen Datacontext (db) in die Klasse zu injizieren.kann nicht auf ein Objekt zugreifen. Datenkontext asp.net 5
Ich habe die folgende Methode:
public async void DeleteItemAfterTimeAsync(int itemId, TimeSpan timeSpan)
{
// give user time to fill out data
await Task.Delay(timeSpan);
var item = db.Items.FirstOrDefault(p => p.Id == itemId);
if (item!= null && item.Status == someStatus)
{
db.Items.Remove(item);
db.SaveChanges();
}
}
Nach der vorgegebenen Zeit wird das Verfahren wie geplant ausgeführt, aber ich erhalte eine Ausnahme: ‚ein angeordnete Objekt nicht zugreifen kann‘, die wahrscheinlich ist, weil der Dienst wegen angeordnet ist, von die Verzögerung. Sollte ich eine neue Instanz meines Datenkontexts in der Methode auflösen oder wie soll ich das beheben? Irgendwelche Ideen? Vielen Dank für Ihre Hilfe im Voraus.
UPDATE:
Aufruf der Methode:
await DeleteItemAfterTimeAsync(item.Id, new TimeSpan(0, 1, 0));
Aktualisiert Methode:
public async Task DeleteItemAfterTimeAsync(int itemId, TimeSpan timeSpan)
{
// give user time to fill out data
await Task.Delay(timeSpan);
var item = db.Items.FirstOrDefault(p => p.Id == itemId);
if (item != null && item.Status == someStatus)
{
db.Items.Remove(item);
db.SaveChanges();
}
}
Ausnahme tritt auf db.Items.Remove (Punkt);
Wie ist der Datacontext registriert? Als vorübergehend? –
Haben Sie versucht, 'async Task' anstelle von' async void' zu verwenden? – Domysee
In startup.cs: services.AddEntityFramework() .AddSqlServer(). AddDbContext (Optionen => Optionen.UseSqlServer (Konfiguration ["Data: DefaultConnection: ConnectionString"]))); –