簡體   English   中英

使用Repository在MVC 5中刪除方法

[英]Delete Method in MVC 5 using Repository

對不起,我是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中找不到該對象。

對象需要已加載或附加到上下文才能刪除它。

使用標識符對對象的上下文執行搜索/查找。 找到對象后,可以將其從上下文中刪除。

鑒於所涉及的模型的結構在此答案時尚不清楚,這里是一個如何完成刪除的示例。

[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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM