C# Web API l oop отправляет только одно значение - PullRequest
0 голосов
/ 02 февраля 2020

Я прочитал свои строки из SQL в объект и, а затем хотел бы опубликовать их, используя приведенный ниже код, в веб-API. Одна строка размещена, а остальные 99 строк нет. Чего-то не хватает в моем коде для каждого l oop?

Код ниже…

  using (SqlCommand command = new SqlCommand(query, connection))
                    {
                        connection.Open();
                        List<ProductSQL> myObjectList = new List<ProductSQL>();
                        var reader = command.ExecuteReader();
                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                ProductSQL myObject = new ProductSQL();
                                myObject.sku = reader["sku"].ToString();
                                myObject.title = reader["title"].ToString();
                                myObject.description = reader["description"].ToString();
                                myObjectList.Add(myObject);
                            }
                        }
                        var JsonResult = JsonConvert.SerializeObject(myObjectList);
                        Console.WriteLine(myObjectList);
                        Console.WriteLine(JsonResult);



                /* Program Initialization Now need to see why multiple articles are not*/

                Console.WriteLine("Post Articles To API");
                HttpResponseMessage response2;
                Product NewProduct = new Product();
                foreach (ProductSQL product in myObjectList.ToList())
                {

                    NewProduct.sku = product.sku;
                    NewProduct.title = product.title;
                    NewProduct.description = product.description;
                }


                /* Mapping that needs to be autmated between models , Product.cs and ProductSQL.cs */

                response2 = await client.PostAsJsonAsync("sites/1/products.json",NewProduct);
                if (response2.IsSuccessStatusCode)

               {

                    Uri Product = response2.Headers.Location;
                    Console.WriteLine(response2);

                      }

1 Ответ

0 голосов
/ 02 февраля 2020

Вы публикуете только один продукт, потому что PostAsJsonAsync выполняется вне блока foreach!
Размещение кода внутри блока foreach должно решить вашу проблему.

foreach (ProductSQL product in myObjectList)
{
    Product newProduct = new Product {
       sku = product.sku,
       title = product.title,
       description = product.description,
    }

    /* Mapping that needs to be autmated between models , Product.cs and ProductSQL.cs */    
    response2 = await client.PostAsJsonAsync("sites/1/products.json", product);
    if (response2.IsSuccessStatusCode)
    {
        Uri productUri = response2.Headers.Location;
        Console.WriteLine(response2);
    }      
}       

ДРУГИЕ ВЕЩИ :

  1. myObjectList уже является списком, поэтому вам не нужен .ToList()
  2. Какая польза от var JsonResult = JsonConvert.SerializeObject(myObjectList);?
  3. Небольшая вещь о соглашении об именах: NewProduct было бы лучше, если бы назвали newProduct
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...