这里完全是新手!它已经吞噬了我几个小时,但 - 我希望 - 对你来说,它将是一块蛋糕。我必须先创建一个数据库(包含一个表book
),然后使用实体框架自动实现基本的CRUD功能。该表确实定义了其主键!使用实体框架创建新记录时违反主键
我的问题显然在于ID的生成方式。建立一个空数据库开始,我也不例外添加的第一个记录,但不能添加下一个和BookController
Create
函数内的db.SaveChanges()
指令抛出DbUpdateException
:
[HttpPost]
public ActionResult Create(book book)
{
if (ModelState.IsValid)
{
db.book.Add(book);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(book);
}
的内部异常去如下:
违反PRIMARY KEY约束'PK_book'。无法在对象'dbo.book'中插入重复的 密钥。该语句已终止。
我已经通过在ID定义之前添加两个注释来更改生成的上下文的部分,但它仍然不起作用。
public partial class book
{
[Key] // added
[DatabaseGenerated(DatabaseGeneratedOption.Computed)] // added
public int ID { get; set; }
public string title { get; set; }
public string author { get; set; }
public Nullable<int> pages { get; set; }
public Nullable<double> price { get; set; }
public Nullable<System.DateTime> date { get; set; }
public Nullable<bool> access { get; set; }
}
这个错误意味着您输入的ID相同的值的两倍。由于ID是关键,它必须是唯一的。 –
@FhahadJameel。是的我知道。我只是认为添加注释就足够了。另一方面,我不确定数据库与应用程序的合作是怎样的......是否必须以某种方式在数据库中明确指定它?如果是这样,那么怎么样? – dalegor
你的数据库中是否有自动ID功能设置? – code