我正在學習ASP.NET MVC。我正在關注asp.net的基本教程之一。由於我並不總是遵循教程,所以我決定使用GUID作爲標識列而不是整數。一切工作正常,直到我通過MVC應用程序添加新記錄到數據庫。當我添加新記錄時,它插入了一個空白的GUID而不是生成的GUID。這裏是處理插入代碼隱藏的段:使用GUID作爲與ASP.NET MVC的數據庫中的ID
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude = "id")]Movie movieToCreate)
{
try
{
_entities.AddToMovieSet(movieToCreate);
_entities.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
的[Bind(Exclude = "id")]
「線忽略」的ID列,因爲它是自動生成。在教程中,ID是自動遞增的,但我認爲這是因爲它是一個整數。我嘗試在此方法中添加一行:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude = "id")]Movie movieToCreate)
{
try
{
movieToCreate.id = Guid.NewGuid();
_entities.AddToMovieSet(movieToCreate);
_entities.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
但是,ID仍然是空的GUID。任何人都可以向我提供一些信息,說明這是爲什麼,也許如何解決它?
顯然刪除'[Bind(Exclude)]'並保留'Guid.NewGuid()'修復了這個問題。我仍然想知道爲什麼ID自動增加,但GUID不是自動生成的。 – Anders 2009-08-19 19:58:24
這兩個值都是在服務器上生成的。但EF只能看到int,因爲SQL Server提供程序從服務器返回生成的ints,但沒有生成ID。如果你放棄了上下文並重新查詢,你會看到兩者。 – 2009-08-20 01:57:39
...但不生成ID。 - > ...但不生成GUID。 – 2009-08-20 01:58:17