C# 使用存储库删除MVC5中的方法
抱歉,我是ASP.NET的新手之一,我正在尝试了解为什么我的删除方法不起作用 他的方法是:C# 使用存储库删除MVC5中的方法,c#,asp.net-mvc,C#,Asp.net Mvc,抱歉,我是ASP.NET的新手之一,我正在尝试了解为什么我的删除方法不起作用 他的方法是: [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(Domain domain) { var rep = new Repository<Site>(); var siteRecordFromDomainObject = _mapper.Ma
[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);
}
[HttpPost,ActionName(“删除”)]
[ValidateAntiForgeryToken]
公共操作结果删除已确认(域)
{
var rep=新存储库();
var siteRecordFromDomainObject=\u mapper.Map(域);
rep.Delete(siteRecordFromDomainObject);
返回视图(域);
}
下面是存储库中的代码:
public void Delete(TObject t)
{
_context.Set<TObject>().Remove(t);
_context.SaveChanges();
}
公共作废删除(TObject t)
{
_context.Set().Remove(t);
_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);
}
[HttpPost,ActionName(“删除”)]
[ValidateAntiForgeryToken]
公共操作结果删除已确认(域){
var rep=新存储库();
//假设存储库有一些检索实体的方法,
//使用公共标识符从存储库获取站点
var siteRecord=rep.FirstOrDefault(s=>s.id==domain.id);
如果(siteRecord!=null){
//如果找到记录,请将其从存储库中删除
代表删除(站点记录);
}
返回视图(域);
}
需要已加载对象或将其附加到上下文才能将其删除
使用标识符对对象的上下文执行搜索/查找。一旦找到对象,就可以将其从上下文中删除
考虑到在回答此问题时不知道所涉及模型的结构,这里是一个如何进行删除的示例
[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);
}
[HttpPost,ActionName(“删除”)]
[ValidateAntiForgeryToken]
公共操作结果删除已确认(域){
var rep=新存储库();
//假设存储库有一些检索实体的方法,
//使用公共标识符从存储库获取站点
var siteRecord=rep.FirstOrDefault(s=>s.id==domain.id);
如果(siteRecord!=null){
//如果找到记录,请将其从存储库中删除
代表删除(站点记录);
}
返回视图(域);
}
您可以检查域变量id,如果该id为零或null,则无法在数据库中调整对象。您可以检查域变量id,如果该id为零或null,则无法在数据库中调整对象。谢谢!这帮了大忙@GWizard,很乐意帮忙。如果此答案解决了您的问题,请将其标记为答案。当你得到足够的分数时,你也可以投票。谢谢,谢谢恩科西!这帮了大忙@GWizard,很乐意帮忙。如果此答案解决了您的问题,请将其标记为答案。当你得到足够的分数时,你也可以投票。谢谢