如何在C#中传递List对象中的值?

时间:2016-09-30 06:23:02

标签: c#

这可能很简单。那就是我有一些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;
}

有关详细参考,我已添加此屏幕截图 enter image description here

如截图所示,有两组对象。如何将所有这些传递到数据库中。非常感谢帮助

2 个答案:

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