質問: このエラーが発生しました。解決できませんでした。 > System.Data.SqlClient.SqlException: 'このトランザクションで作業中の保留中の要求があるため、トランザクション操作を実行できません。 > > 現在進行中のことは、通常のデータ操作がコントローラーのアクションの一部として行われているということです。 同時に、アクションをデータベースに記録するフィルタが実行されています。 ``` this._orderEntryContext.ServerLog.Add(serverLog); return this._orderEntryContext.SaveChanges() > 0; ``` これがエラーが発生する場所です。 そのため、同時に2つのSaveChangeが実行されているように見え、トランザクションが混乱します。 解決方法がわからない。彼らは両方ともDIを通して得られる同じ文脈を使っています。回避策は手動で2番目のコンテキストを作成することでしたが、私はむしろDIパターンに固執したいと思います。しかし、DIで2番目のDbコンテキストを作成する方法がわからない、またはそれが良い考えであるとしても。 たぶん、私は両方の呼び出しでSaveChangesAsync()を使用して、それらが互いに踏み込まないようにする必要がありますか?
回答: これに対する答えはContextを一時的なサービスにすることでした。 ``` services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")), ServiceLifetime.Transient); ``` 次に、すべてのリポジトリを一時的に変更しました。 ``` services.AddTransient(); ```