asp.net mvc以编程方式将数据添加到数据库

时间:2016-06-20 16:53:20

标签: c# asp.net 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");
}

获取UserId和BookId有效,但调用此方法时出现问题。我得到了#34;无法找到资源"错误。那么,该怎么看? GiveBackDate是Nullable,我希望在创建记录时它为null。

编辑:我重建了项目并且错误消失了..但代码仍然无法正常工作。似乎asp没有计算BorrowIds。如果数据库为空,我可以保存一条记录。但是,如果保存了一条记录,则下一条记录的标识为0并生成错误:

违反PRIMARY KEY约束' PK_BORROWS'。无法在对象' dbo.Borrows'中插入重复键。重复键值为(0)。 该语句已终止。

84行错误:

84:{

85:db.Borrows.Add(br);

86:db.SaveChanges();

87:返回RedirectToAction("索引"); 88:}

我在BookController中调用AddIt:

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

2 个答案:

答案 0 :(得分:0)

  1. 确保网址正确无误。控制器,动作和路由方式
  2. 确保您实际上正在制作HTTP Post,因为该操作仅映射到Post动词。

答案 1 :(得分:0)

我发现了违反主键错误的原因。当我创建数据库时,我没有将IDENTITY属性添加到我的主键BorrowID列。所以,id应该是这样的:

CREATE TABLE [dbo].[Borrows] (
    [BorrowId] INT IDENTITY (1, 1) NOT NULL,