ホーム>source

これは私のコードです:

<前>ウィズウィズ

次のエラーが表示されます

ウィズウィズ

コードはレコードを削除していません。 Student student = db.Students.Find(id); db.Students.Remove(student) db.SaveChanges(); return RedirectToAction("Index"); を使用する必要がありますかこのため? C#とASP.NET MVCは初めてです

SqlException: The DELETE statement conflicted with the REFERENCE constraint "FK_Payment_Student". The conflict occurred in database "BlackBeardDB", table "dbo.Payment", column 'studentID'

あなたの答え
  • 解決した方法 # 1

    学生は支払いと1対多の関係にあるため、データベースから学生エンティティを削除することはできません。学生を削除した後、最初に学生を特定する支払いを削除します。

    この問題を解決するには、以下を確認できます

    データベースからの完全削除(完全な削除)は推奨されません。使用できますソフト削除パターン Entity Framework Core:Soft Deleteをご覧ください。

    カスケード削除を試すことができます:カスケード削除

  • 解決した方法 # 2

    親テーブル Students から要素を直接削除することはできません   Payment と外部キー関係にあるため  テーブル 。まず、子テーブルvizからエントリを削除する必要があります。ここ Payment table  次に、studentテーブルのエントリ。 または あなたは soft delete できます   Student table からのエントリ  列 IsDeleted を追加できる場所  エントリを直接削除するのではなく、エントリが削除されるときにこのビットフラグをtrueに更新します。

  • 解決した方法 # 3

    支払いの詳細を削除する前に学生のレコードを削除することはできません。または、支払いテーブルの学生IDを孤立したIDに更新する必要があります。 したがって、ON DELETE CASCADEまたはON UPDATE CASCADEを使用して問題を解決できます。

    おかげで、 ニール

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ linux - Unixシステムコマンド終了コード