使用Visual Studio从脚手架提供的代码,我从模型自动获得delete和编辑控制器,但是如果我需要根据id从数据库y中的一行编辑/删除数据库x中的一行,我将通过代码解释它:
控制器编辑我所做的
var despesaUtilizador = db.SaldoUtilizadores.Where(x => x.despesaId == despesa.DespesaId).Where(x => x.ApplicationUserId == userId).First();
despesaUtilizador.valor = despesa.DespesaValor;
despesaUtilizador.data = despesa.Data;
if (ModelState.IsValid)
{
db.Entry(despesaUtilizador).State = EntityState.Modified;
db.Entry(despesa).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}我对数据库SaldoUtilizadores进行了查询,以获得与发送给控制器的id相匹配的行,然后我尝试编辑该行,只是不知道如果有人能解释我这样做是否正确。
控制器删除
public ActionResult DeleteConfirmed(int id)
{
Despesa despesa = db.Despesas.Find(id);
var userId = User.Identity.GetUserId();
var despesaUtilizador = db.SaldoUtilizadores.Where(x => x.despesaId == id).Where(x => x.ApplicationUserId == userId).First();
db.Despesas.Remove(despesa);
db.SaldoUtilizadores.Remove(despesaUtilizador);
db.SaveChanges();
return RedirectToAction("Index");
}int delete --我试着做同样的事情,它也不工作:/
发布于 2016-04-08 16:10:09
我得到了这个异常“序列不包含任何元素”
这来自于使用First()。如果没有匹配的元素,它将引发该异常,因为它不能返回“第一个”项。
您应该始终使用FirstOrDefault(),除非您100%确定集合中确实有项目。如果没有匹配,FirstOrDefault()将返回null,而不是引发异常。然后,您可以检查null的存在并相应地处理。
如果你认为真的应该有一些东西被归还,那么你需要弄清楚为什么不是这样的。检查数据库中的数据,并确保您发出的查询与实际存在的查询成一行。
https://stackoverflow.com/questions/36503490
复制相似问题