5
データベースに何かが存在するかどうかを確認し、高速で失敗するか、データベース例外を待つ必要がありますか
2つのクラスがある: public class Parent { public int Id { get; set; } public int ChildId { get; set; } } public class Child { ... } 割り当てるときChildIdにParent、それが例外をスローするDB用DBまたは待機中に存在する場合、私が最初に確認する必要がありますか? 例(Entity Framework Coreを使用): 注:これらの種類のチェックは、Microsoftの公式ドキュメントでもインターネット全体で行われます:https : //docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using- mvc / handling-concurrency-with-the-entity-framework-in-an-asp-mvc-application#modify-the-department-controllerしかし、追加の例外処理がありますSaveChanges また、このチェックの主な目的は、APIのユーザーにわかりやすいメッセージと既知のHTTPステータスを返すことであり、データベースの例外を完全に無視することではないことに注意してください。そして、例外がスローされる唯一の場所は、内部にあるSaveChangesかSaveChangesAsyncを呼び出すときに例外がありません...コールFindAsyncまたはAny。そのため、子が存在するが以前に削除されていた場合SaveChangesAsync、同時実行例外がスローされます。 これは、foreign key violation「ID {parent.ChildId}の子が見つかりませんでした」と表示するために、例外の書式設定がはるかに困難になるという事実のために行いました。 public async Task<ActionResult<Parent>> CreateParent(Parent parent) { // is this …