2016-04-08 7 views
0

Visual Studioで足場から提供されているコードを使用して、モデルから自動削除コントローラと編集コントローラを取得しますが、別のテーブルのIDに基づいてテーブル上の行を編集して削除する

コントローラ編集iはデータベースSaldoUtilizadoresにクエリを行った

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

やった:/データベースから行を削除する私はコードを介してそれを説明するIDに基づいて、データベースYから列基準でxコントローラーに送信されているIDと一致する行を取得するために、その行を編集しようとすると、/

+1

ここに複数のデータベースはありません。あなたはただ一つの文脈を利用しています。 –

+0

申し訳ありません私はデータベースを意味しませんでした、私はデータベースからクラスを意味します –

+0

実際の問題は何ですか?あなたは例外を取得していますか?何がうまくいかず、もっと重要なのはどうして*うまくいかないのか? –

答えて

0
:私は正しい方法誰かがそれをコントローラが削除int型

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

を削除

を説明できる場合、私はそれがいずれかの作業をいけない、同じことをやろうということをやっているかどうかを知ります

この例外が発生する「シーケンスに要素が含まれていません」

これはFirst()からのものです。一致する要素がない場合、返すことができる「最初の」項目がないため、その例外が発生します。

実際にコレクションにアイテムがあることを100%確信していない限り、必ずFirstOrDefault()を使用してください。 FirstOrDefault()は、例外が発生するのではなく、一致するものがなければnullを返します。その後、nullの有無をチェックし、それに応じて処理することができます。

本当に何かが返されているはずだと思うなら、なぜそうでないのかを理解する必要があります。データベース内のデータを調べて、発行しているクエリが実際に存在するものと並んでいることを確認します。

+0

ここでの問題は次のとおりです。例外が発生するのは100%確信しています。経費はビューに表示されません、私は私のデータベースに行く場合は、私はそれらすべてを持っている:S –

+0

あなたのクエリにいくつかの問題があります。私が推測しなければならないのは、あなたの外来キーがあなたが外来キーとして実際に利用されていない(エンティティが不適切に構成されている)と考えているプロパティです。あなたのエンティティクラスを投稿すると、それが問題を明らかにする可能性があります。 –

関連する問題