这里的新手!它已经吞噬了我几个小时,但是 - 我希望 - 对你来说它将是一块蛋糕。我必须首先创建一个数据库(包含一个表book
),然后使用Entity Framework自动实现基本的CRUD功能。该表确实已定义其主键!
我的问题显然在于生成ID的方式。从空数据库开始,添加第一条记录时没有异常,但无法添加下一条记录,而db.SaveChanges()
函数Create
内的BookController
指令会引发DbUpdateException
:< / p>
[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; }
}
答案 0 :(得分:1)
要为数据库Key
设置自动增量,您可以将Identity
属性设置为表定义。
[ID] INT IDENTITY (1, 1) NOT NULL
或者将ID属性更改为:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }