我在向数据库添加数据时遇到了问题。我有书,用户和借书的表。因此,当用户登录应用程序并选择书籍时,我想添加新数据以借用表格。我认为它应该是这样的(我称之为点击所选书籍的方法):
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");
}
答案 0 :(得分:0)
答案 1 :(得分:0)
我发现了违反主键错误的原因。当我创建数据库时,我没有将IDENTITY属性添加到我的主键BorrowID列。所以,id应该是这样的:
CREATE TABLE [dbo].[Borrows] (
[BorrowId] INT IDENTITY (1, 1) NOT NULL,