0

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

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

4

2 回答 2

1

试试这个:

var module = new Module() { Id = id };
_db.Entry(module).State = EntityState.Deleted;
_db.SaveChanges();
于 2013-06-26T14:36:22.287 回答
1

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

public ActionResult DeleteModule(long id)
{ 
   var module = _db.Modules.FirstOrDefault(m => m.Id == id);
   _db.Modules.Remove(module);
   _db.SaveChanges();
   ...
}
于 2013-06-26T14:47:58.143 回答