根据项目的ID获取db表中的项目行作为对象

时间:2013-06-26 14:30:23

标签: asp.net-mvc entity-framework asp.net-mvc-4

我有一个名为基于域模型模块的模块的表。 如果我想添加新模块,我可以这样做

 _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));

这是删除方法

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值。

2 个答案:

答案 0 :(得分:1)

试试这个:

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

答案 1 :(得分:1)

您可以找到一个模块并将其删除,而不是创建一个新的模块对象。

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