Asp.net mvc MVC删除记录时遇到问题

Asp.net mvc MVC删除记录时遇到问题,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,尝试删除记录时出错: InvalidOperationException-无法删除该对象,因为在ObjectStateManager中找不到该对象 public ActionResult Delete(CustomerModel customer) { db.Customer.Remove(customer); db.SaveChanges(); return View(); } 更新:我检

尝试删除记录时出错:

InvalidOperationException-无法删除该对象,因为在ObjectStateManager中找不到该对象

public ActionResult Delete(CustomerModel customer)
        {
            db.Customer.Remove(customer);
            db.SaveChanges();
            return View();
        }
更新:我检查了bebugger,customer完全为空..因此数据库无法删除该特定记录

知道为什么吗?

您的客户对象没有加载到名为db的DbContext中(我假设它是DbContext…代码中不完全清楚)

对于实体框架,您使用的DbContext必须知道它所作用的对象。看起来您是以某种方式创建客户的,而不是将其加载到数据库中

可以将其添加到DbContext,如下所示:

db.Attach(customer);
然后,继续删除它并保存更改

有关更多详细信息,请参阅

特别是针对您的情况,将现有实体附加到上下文的段落

更新(基于您的更新)


你最初是如何创建客户的?如果没有这些细节,理解它为什么是完全空的只是猜测。

实际上,这个问题是实体框架问题,而不是MVC问题。例如,在使用实体框架的控制台应用程序中,您会以相同的方式看到相同的错误。CustomerModel类只有名称、id、地址等。。。我可以使用db.Customer.Add(Customer)创建一个用户;etc,但此删除方法不起作用。可能删除是在与原始添加不同的HTTP请求期间发生的。这意味着DbContext不知道它,因此无法删除它。确保ID已填充到要删除的对象中,而不仅仅是添加我的答案中建议的代码行。尝试创建实体的对象,类似于
db=new customerenties()。。。