我有一个名为基于域模型模块的模块的表。 如果我想添加新模块,我可以这样做
_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值。
答案 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();
...
}