に配置されたオブジェクトのDataContext asp.netにアクセスすることはできません。 DIを使用して、Datacontext(db)をクラスに挿入しています。与えられた時間メソッドが計画通りに実行が、私は例外を取得した後は、私は非同期を使用して遅延して、私のDBから項目を削除するasp.net 5 /コアで5
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();
}
}
:
は、私は次のメソッドを作成したサービスはのために配置されているので、おそらく「で破棄されたオブジェクトにアクセスすることはできません」遅延。 メソッド内のdatacontextの新しいインスタンスを解決する必要がありますか、これをどのように修正する必要がありますか? アイデア 事前にお手伝いいただきありがとうございます。UPDATE:
メソッドを呼び出す:
await DeleteItemAfterTimeAsync(item.Id, new TimeSpan(0, 1, 0));
更新方法:
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();
}
}
例外db.Items.Remove(アイテム)に発生します。
Datacontextはどのように登録されていますか?トランジェントとして? –
'async void'の代わりに' async Task'を使ってみましたか? startup.csで – Domysee
:services.AddEntityFramework().AddSqlServer()AddDbContext(オプション=> options.UseSqlServer(構成[ "データ:DefaultConnectionを:のConnectionString"]))。 –