这可能很简单。那就是我有一些JSON细节作为一个列表,然后它转换为对象。所以现在该对象包含2个值,因为它是一个列表。所以我想将它们传递到数据库中。我如何实现这一目标。
这是我尝试过的。
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;
}
如截图所示,有两组对象。如何将所有这些传递到数据库中。非常感谢帮助
答案 0 :(得分:4)
我不知道我是否理解你,但也许这可能是问题所在:
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;
}
您将一个List条目插入数据库并return true;
当您使用return
时,退出方法并停止foreach
。
对此,您的代码只添加列表中的一个条目。
尝试删除此return true;
同时检查插入过程中发生的任何异常。
答案 1 :(得分: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;
}
}