根据另一个表中的id编辑和删除表中的行

时间:2016-04-08 15:25:37

标签: asp.net-mvc asp.net-mvc-4

使用Visual Studio从脚手架提供的代码我自动从模型中获取删除和编辑控制器,但如果我需要根据基于数据库y的行编辑/删除数据库x中的行,该怎么办?在id上我通过代码解释它:

控制器编辑我做的事

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

在删除中我尝试做同样的事情,它也不起作用:/

1 个答案:

答案 0 :(得分:0)

  

我得到此异常“序列不包含任何元素”

来自使用First()。如果没有匹配的元素,它将引发该异常,因为它没有“第一”项可以返回。

除非您100%确定集合中确实有项目,否则您应始终使用FirstOrDefault()。如果没有匹配,FirstOrDefault()将返回null,而不是引发异常。然后,您可以检查是否存在null并相应地处理。

如果您认为确实应该返回某些内容,那么您需要弄清楚为什么不是这种情况。检查数据库中的数据,确保您发出的查询与实际存在的内容对齐。