2013-07-15 56 views
0

首先,刪除數據記錄,我只是一個初學者,當我試圖通過傳遞ID通過視圖控制器來刪除SQL記錄,下面是我的代碼:不能在ASP.NET MVC

注:「用戶名」是在表「T_Users」

#region Delete record function 
     public ActionResult Delete(string id) { 
      T_Users temp_u = new T_Users() { Username = id }; 
      //db.T_Users.Attach(new T_Users() { Username = id }); 
      db.T_Users.Remove(temp_u); 


      try 
      { 
       db.SaveChanges(); 
       //return View(); 
      } 
      catch(Exception e) { 
       return Content("hehe"); 
      } 
      return RedirectToAction("Index"); 
     } 
     #endregion 

當我調用T_Users.Attach()方法,它說:「具有相同鍵的對象已經存在於ObjectStateManager的ObjectStateManager不能跟蹤多個的PK。對象具有相同的鍵「

然後我評論說,它失敗了,因爲」obj ect無法刪除,因爲它在ObjectStateManager中找不到。「

任何人都可以提供關於解決方案的一些想法嗎?

+0

這個問題是關於** EF **,不是關於ASP.NET MVC。你不應該使用ID創建一個對象,你應該獲取它,然後刪除。 –

+0

錳....但我做了搜索,沒有發現 插入什麼?沒有對象,因爲它是新的權利? – LifeScript

回答

2

在嘗試刪除對象之前,您並未從數據上下文中檢索對象,而是正在創建一個新的分離對象,該對象將與現有ID分配相同的ID並試圖將其刪除。

您應該首先從數據上下文中檢索要刪除的對象,然後在檢索到的對象上發出刪除命令。這是一個ORM,因此您不是簡單地生成SQL來執行而是管理映射對象。

我希望這會有所幫助。

不是一個大EF用戶,但你可以做這樣的事情吧:

var user = db.T_Users.First(e => e.Username == id); 
db.T_Users.Delete(user); 

有EF教程AA負荷這樣在那裏,雖然:

http://www.codeproject.com/Articles/37932/Simple-Sample-with-Entity-Framework

+0

打我吧:) – Eonasdan

+0

好點,但有一個函數,我可以得到那個對象? – LifeScript

+0

@LifeScript不好意思問這個問題,但是你正在關注或者閱讀任何EF教程嗎? –