2

MusicStoreのサンプルと同じように簡単なMVC3プロジェクトを作成しました。すべてがうまくいきました。次に、データベースをGoDaddyサーバーに移植するときが来ましたが、データベースからアイテムを削除できなくなりました。

これはエラーです:

DELETEステートメントがREFERENCE制約\"Captions_Item_Captions\"と競合していました。データベース\"mattymattmofo\"、テーブル\ "dbo.Captions \"、列'Item_ItemId'で競合が発生しました。\r\nステートメントは終了しました。

    //
    // POST: /NavigationManager/Delete/5

    [Authorize(Roles = "Administrator")]
    [HttpPost, ActionName("Delete")]
    public ActionResult DeleteConfirmed(int id)
    {
        Item item = db.Items.Find(id);
        db.Items.Remove(item);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

誰か助けてもらえますか?

4

2 に答える 2

3

外部キーに問題があります。問題はデータベースにあります。外部キーでバインドされている行は削除できません

于 2012-05-25T08:20:32.183 に答える
1

データベースでは、アイテム(親テーブル)は外部キーによってキャプション(子テーブル)にリンクされています。つまり、Itemsテーブルから行を削除する場合でも、Captionsテーブルのこの行への接続が存在する可能性があります。したがって、データベースの整合性を維持するために制約が生成されます。これを解決するには、次の2つの方法があります。

  1. 制約を削除する-推奨されておらず、悪い習慣
  2. ルールの削除で制約を更新します。次の選択肢があります:アクションなしカスケードヌル設定、デフォルトの設定。

現在、制約削除ルールはおそらくアクションなしに設定されているため、このエラーが発生します。

(Keysフォルダー内の)制約を右クリックして、ManagementStudioで[ルールの削除]を設定できます->[変更]->[挿入と更新の仕様の拡張]->[ルールの削除]。

またはT-SQLスクリプトによって。それを行う方法については多くのがあります。

于 2012-05-25T09:07:42.433 に答える