2016-09-30 9 views
1

これは単純なものかもしれません。それは、リストとして来るいくつかのJSONの詳細を持っているし、それはオブジェクトに変換されます。だから、オブジェクトはリストなので2つの値を含んでいます。だから私はそれらをデータベースに渡したかったのです。どのようにこれを達成するのですか?C#のListオブジェクトにある値を渡す方法は?

これは私が試みたものです。

public IHttpActionResult PostRegister([FromBody] dynamic register) 
{ 
    try 
    { 
     Newtonsoft.Json.Linq.JArray qualificationRes = (Newtonsoft.Json.Linq.JArray)register.qualification; 
     var qualification = qualificationRes.ToObject<List<Qualification>>(); //conversion to the List object 
     var sta2 = QMgrt.InsertQualifications(qualification,nid); //passing of List value. 
     return Ok("success"); 
    } 

    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
     return Ok("fail"); 
    } 
} 

これは、スクリーンショットに見られるように、私は、オブジェクトの2つの設定があり、このスクリーンショット enter image description here

を追加したどのように私はより多くの参考のためにデータベース

public bool InsertQualifications(List<Qualification> quali,int newid) //Getting the List values 
{ 
    foreach (Qualification q in quali) // This is where the issues comes only one set of object is passed to the database 
    { 
     try 
     { 
      var status = db.AddQualiDetails("Insert_QualiDetails", q.Description, q.University, q.Date_of_award, q.Qauli_id, q.Quali_type, newid, q.Duration); 
      return true; 
     } 
     catch (Exception) 
     { 
      return false; 
     } 
    } 
    return true; 
} 

にそれを挿入しようとしています。どのようにしてそれらをすべてデータベースに渡すか。あなたがreturnを使用するときに、データベースへの1つのリストのエントリとreturn true; を挿入

public bool InsertQualifications(List<Qualification> quali,int newid) //Getting the List values 
{ 
    foreach (Qualification q in quali) // This is where the issues comes only one set of object is passed to the database 
    { 
     try 
     { 
      var status = db.AddQualiDetails("Insert_QualiDetails", q.Description, q.University, q.Date_of_award, q.Qauli_id, q.Quali_type, newid, q.Duration); 
      return true; <<<<<------- 
     } 
     catch (Exception) 
     { 
      return false; 
     } 
    } 

    return true; 
} 

:ヘルプは本当に

答えて

5

をいただければ幸い私はあなたが右理解していれば、私は知らないが、多分これは問題になる可能性メソッドを終了してforeachを停止します。 これに関して、あなたのコードはあなたのリストの1つのエントリだけを追加しています。 これをただ取り除こうとしてください。return true;

また、挿入中に例外が発生したことを確認してください。

+1

うん。 'return true'の削除は私の問題を解決しました。ありがとう:) –

2

私が見た限り、db.SaveChanges()に電話しませんでした。 SaveChangesは、データベースへの変更をコミットします。ループにreturn true;もあります。ループを壊します。ここで

は、データベースにデータを保存するための正しいコードです:

public bool InsertQualifications(List<Qualification> quali,int newid) //Getting the List values 
    { 

     foreach (Qualification q in quali) // This is where the issues comes only one set of object is passed to the database 
     { 
      try 
      { 
       var status = db.AddQualiDetails("Insert_QualiDetails", q.Description, q.University, q.Date_of_award, q.Qauli_id, q.Quali_type, newid, q.Duration); 
      } 
      catch (Exception) 
      { 
       return false; 
      } 
     } 
     db.SaveChanges(); 
     return true; 
    } 
} 
+1

リターンtrueを削除すると、私は問題を解決するのに役立ちました。ありがとう。 :) –

関連する問題