這裏完全是新手!它已經吞噬了我幾個小時,但 - 我希望 - 對你來說,它將是一塊蛋糕。我必須先創建一個數據庫(包含一個表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