2016-09-30 68 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"); 
    } 
} 

这是我试图把它插入到数据库

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

更多参考我加入这个截图 enter image description here

正如截图看到有两个集对象。我如何将它们全部传递到数据库中。帮助将非常感激

回答

5

我不知道我理解你的权利,但也许这可能是问题:

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 true; 当您使用return您退出该方法并停止foreach。 对此,您的代码仅添加您的列表中的一个条目。 尝试删除此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帮助我解决了这个问题。谢谢。 :) –