很抱歉,我是ASP.NET的新手之一,我正在努力解决为什么我的删除方法无效。
他的方法是:
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(Domain domain)
{
var rep = new Repository<Site>();
var siteRecordFromDomainObject = _mapper.Map<Site>(domain);
rep.Delete(siteRecordFromDomainObject);
return View(domain);
}
这是来自存储库的代码:
public void Delete(TObject t)
{
_context.Set<TObject>().Remove(t);
_context.SaveChanges();
}
有人能告诉我为什么会收到此错误:
无法删除该对象,因为在该对象中找不到该对象 ObjectStateManager。
答案 0 :(得分:0)
对象需要已加载或附加到上下文,以便能够将其删除。
使用标识符在对象的上下文中执行搜索/查找。找到对象后,您可以将其从上下文中删除。
鉴于所涉及的模型的结构在此答案时尚不清楚,这里是一个如何进行删除的例子。
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(Domain domain) {
var rep = new Repository<Site>();
//Assuming Repository has some means of retrieving entities,
//get the site from repository using a common identifier
var siteRecord = rep.FirstOrDefault(s => s.id == domain.id);
if(siteRecord !=null) {
//if a record is found, remove it from repository
rep.Delete(siteRecord);
}
return View(domain);
}