2016-06-20 20 views
-1

データベースにデータを追加する際に問題が発生しました。私は本、ユーザー、借りのためのテーブルを持っています。だから、ユーザーがアプリケーションにログインしてブックを選択すると、私は新しいデータを追加してテーブルを借りたいと思う。asp.net mvcプログラムでデータベースにデータを追加する

public ActionResult AddIt([Bind(Include = "BorrowId,BorrowDate,GiveBackDate,BookId,UserId")] Borrows br)) 
{ 
    br.BorrowDate = DateTime.Now; 
    br.BookId = int.Parse(Session["BookId"].ToString()); 
    br.UserId = int.Parse(Session["UserId"].ToString()); 
    if (ModelState.IsValid) 
    { 
     db.borrows.Add(br); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    return RedirectToAction("Index"); 
} 

は、ユーザーIDとBookIdは動作しますが、このメソッドを呼び出している間何か問題がある行き方:私は、この(私が選んだ本を上クリックし、このメソッドを呼び出す)のようなものであるべきと思いました。 「リソースが見つかりません」というエラーが表示されます。だから、どうやってその方法を見なければならないだろうかGiveBackDateはNullableで、レコードを作成するときにnullにします。

編集:私はプロジェクトを再構築し、そのエラーは無効になりました..しかし、コードはまだ正しく動作しません。 aspのようなものはBorrowIdsを数えていないようです。データベースが空の場合、レコードを1つ保存できます。しかし、1レコードが保存されると、次のレコードはid 0になり、エラーが発生します。

PRIMARY KEY制約 'PK_BORROWS'の違反。オブジェクト 'dbo.Borrows'に重複キーを挿入できません。重複キー値は(0)です。 ステートメントが終了しました。

84:{

85:84行で

エラーdb.Borrows.Add(BR)。

86:db.SaveChanges();

87:return RedirectToAction( "Index"); 88:}

私はBookControllerで、ここADDITを呼び出す:

public ActionResult borrow(int id) 
{ 
    return RedirectToAction("AddIt", "Borrows"); 
} 
+0

質問にエラーを追加する必要があります。 ToStringを呼び出して[編集] – Will

+0

に貼り付けてください。実際にどの行が例外を引き起こしていますか? – pay

+0

HTTP 404は通常、ルーティングに問題があることを意味します。 HTTP 500は、コードが実行されているが、ある時点でエラーがスローされたときの標準です。 – nurdyguy

答えて

0

違反の主キーエラーの原因が見つかりました。データベースを作成していたときに、主キーのBorrowIDカラムにIDENTITYプロパティを追加しませんでした。 idは次のようになります。

CREATE TABLE [dbo].[Borrows] (
    [BorrowId] INT IDENTITY (1, 1) NOT NULL, 
0
  1. URLが正しいことを確認してください。コントローラー、アクション、ルーティングの方針
  2. 実際にHTTP Postを作成していることを確認してください。アクションはPost動詞にのみマップされているためです。
関連する問題