首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >它没有在ObjectStateManager中找到

它没有在ObjectStateManager中找到
EN

Stack Overflow用户
提问于 2017-03-09 09:34:14
回答 1查看 119关注 0票数 0

我有从MSSQL数据库删除数据的代码。

代码语言:javascript
复制
    [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中有这个

代码语言:javascript
复制
public void Delete<T>(T item) where T : class, IEntity
{
    Set<T>().Remove(item);
}

我有个问题。如果我试图删除Set<T>().Remove(item)行中的一个错误;

{“无法删除该对象,因为它没有在ObjectStateManager中找到”}

什么意思?为什么找不到,ObjectStateManager在哪里?谢谢你的回答!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-09 09:44:51

您需要将存储库变量作为参数发送到GetByID()方法,并使用相同的存储库获取和删除该项。

代码语言:javascript
复制
[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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42691605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档