我有从MSSQL数据库删除数据的代码。
[HttpPost]
public ActionResult DeleteData(PartnerStudy partner)
{
var partnerStudy = GetByID(partner.Idetity);
DomainRepository repository = new DomainRepository();
repository.Delete(partnerStudy);
repository.SaveChanges();
return RedirectToAction("ShowData");
}
public PartnerStudy GetByID(int id)
{
DomainRepository repository = new DomainRepository();
//PartnerStudy partner = repository.GetItem<PartnerStudy>(id);
var partner = repository.GetItem<PartnerStudy>(id);
repository.Dispose();
return partner;
}在DomainRepository中有这个
public void Delete<T>(T item) where T : class, IEntity
{
Set<T>().Remove(item);
}我有个问题。如果我试图删除Set<T>().Remove(item)行中的一个错误;
{“无法删除该对象,因为它没有在ObjectStateManager中找到”}
什么意思?为什么找不到,ObjectStateManager在哪里?谢谢你的回答!
发布于 2017-03-09 09:44:51
您需要将存储库变量作为参数发送到GetByID()方法,并使用相同的存储库获取和删除该项。
[HttpPost]
public ActionResult DeleteData(PartnerStudy partner)
{
using(var repository = new DomainRepository())
{
var partnerStudy = GetByID(partner.Idetity, repository);
repository.Delete(partnerStudy);
repository.SaveChanges();
}
return RedirectToAction("ShowData");
}
private PartnerStudy GetByID(int id, DomainRepository repository)
{
var partner = repository.GetItem<PartnerStudy>(id);
return partner;
}我甚至添加了一个using块,因为DomainRepository似乎实现了IDisposable。
https://stackoverflow.com/questions/42691605
复制相似问题