2013-06-26 132 views
0

的ID獲取數據庫表中的項目行作爲對象我有一個基於域模型模塊的模塊稱爲模塊。 如果我想添加新的模塊,我現在可以做到這一點基於項目

_db.Modules.Add(module);//module is object of type Module 
    _db.SaveChanges(); 

如果我要刪除我可以做

_db.Modules.Remove(module); 

但在我下面我怎麼能做到這一點的刪除方法,如果我只通過Id? 我試圖做下面的事,但它不起作用。沒有改變,行仍然存在。

_db.Modules.Remove(_db.Modules.Find(module.Id)); 

這裏是Delete方法

public ActionResult DeleteModule(long id) 
     { 

      var module = new Module {Id = id}; 
      _db.Modules.Remove(_db.Modules.Find(module.Id)); 
      _db.SaveChanges(); 

      //_db.Modules.Remove(module); 
      Information("Your widget was deleted"); 
      return RedirectToAction("ModuleList", "Module", new { area = "Hardware" }); 
     } 

如何刪除行?基於作爲方法參數傳遞的Id值。

回答

1

試試這個:

var module = new Module() { Id = id }; 
_db.Entry(module).State = EntityState.Deleted; 
_db.SaveChanges(); 
+0

就像一個魅力工作。你再次拯救了我的一天。有趣的是,我以前的代碼工作得很好,但它只是在一段時間後才顯示出來,但是你的代碼更改可以立即看到。 – Cybercop

1

你可以找到一個模塊並刪除,而不是創建一個新的模塊對象吧。

public ActionResult DeleteModule(long id) 
{ 
    var module = _db.Modules.FirstOrDefault(m => m.Id == id); 
    _db.Modules.Remove(module); 
    _db.SaveChanges(); 
    ... 
} 
+0

謝謝!在刪除項目之前,是否有任何方法可以添加某種確認消息對話框。就像一個對話框,你確定要刪除?並按下是項目被刪除。我試圖查找,但沒有找到有用的東西 – Cybercop

+1

確認消息應該在客戶端使用Javascript顯示。一旦你達到行動的方法,它爲時已晚。 – Win