如何使用 Web API 将多个数据项插入 SQL?

Ali*_*rli 0 c# json sql-insert asp.net-web-api

我有一个这样的代码:

public IHttpActionResult Post(CUSTOMER [] newCustomer)
{
    try
    {
        foreach (CUSTOMER item in newCustomer)
        {
            var AddedCust = db.CUSTOMERs.Add(item);
        }

        int insertedRecords = db.SaveChanges();
        return Ok(insertedRecords);
    }
    catch (Exception)
    {
        return BadRequest(ModelState);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用 Postman,我尝试发布不止一条记录 - 但我得到了一个例外:

{

    "NAME": "test1",
    "SURNAME": "Aleksandrova",
    "BIRTHPLACE": "Minsk",
    "GENDER": "F",
    "IDENTITYNO": "AA75 857445",
    "IDENTITYPINCODE": 2552,
    "BIRTHDATE": "1970-06-19T00:00:00"
}
{

    "NAME": "test2",
    "SURNAME": "Aleksat34t34ndrova",
    "BIRTHPLACE": "Minsk",
    "GENDER": "F",
    "IDENTITYNO": "AA75 857445",
    "IDENTITYPINCODE": 2552,
    "BIRTHDATE": "1970-06-19T00:00:00"
}
{

    "NAME": "test3",
    "SURNAME": "Aleksandrova",
    "BIRTHPLACE": "Minsk",
    "GENDER": "F",
    "IDENTITYNO": "AA75 857445",
    "IDENTITYPINCODE": 2552,
    "BIRTHDATE": "1970-06-19T00:00:00"
}
Run Code Online (Sandbox Code Playgroud)

错误:

“无法将当前 JSON 对象(例如 {\"name\":\"value\"})反序列化为类型 'First_API.Models.CUSTOMER[]' 因为该类型需要一个 JSON 数组(例如 [1,2,3] ) 以正确反序列化。\r\n要修复此错误,请将 JSON 更改为 JSON 数组(例如 [1,2,3])或更改反序列化类型,使其成为正常的 .NET 类型(例如,不是原始类型)像整数,而不是像数组或列表这样的集合类型)可以从 JSON 对象反序列化。

我怎么解决这个问题?

Pra*_*kar 7

您的 json 正文无效,Json 数组应包含在[ ](方括号)中,并且每条记录应以,(逗号)分隔

尝试使用以下 json 发送 api 请求

[{

    "NAME": "test1",
    "SURNAME": "Aleksandrova",
    "BIRTHPLACE": "Minsk",
    "GENDER": "F",
    "IDENTITYNO": "AA75 857445",
    "IDENTITYPINCODE": 2552,
    "BIRTHDATE": "1970-06-19T00:00:00"
},
{

    "NAME": "test2",
    "SURNAME": "Aleksat34t34ndrova",
    "BIRTHPLACE": "Minsk",
    "GENDER": "F",
    "IDENTITYNO": "AA75 857445",
    "IDENTITYPINCODE": 2552,
    "BIRTHDATE": "1970-06-19T00:00:00"
},
{

    "NAME": "test3",
    "SURNAME": "Aleksandrova",
    "BIRTHPLACE": "Minsk",
    "GENDER": "F",
    "IDENTITYNO": "AA75 857445",
    "IDENTITYPINCODE": 2552,
    "BIRTHDATE": "1970-06-19T00:00:00"
}]
Run Code Online (Sandbox Code Playgroud)