Служба REST ASP.net со списком сериализации базы MS SQL как нулевым - PullRequest
0 голосов
/ 27 мая 2018

Запуск службы ASP.net REST с использованием сервера MS SQL в качестве базы.

Модель

public class Bookings
{
    [Key]
    public int BookingId { get; set; }

    [Required]
    public int UserID { get; set; }

    public List<string> BookISBN { get; set; }

}

Образец сгенерированной документации, показывающий формат как «правильный» enter image description here

Отправка следующих данных через почтальона

{
  "BookingId": 1,
  "UserID": 2,
  "BookISBN": [
    "sample string 1",
    "sample string 2",
    "sample string 3"
  ]
}

Однако последний столбец списка "BookISBN" не создается, и API возвращает параметр в виде NULL / i: nil = "true"

enter image description here

<ArrayOfBookings xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/PublisherDataModel">
<Bookings>
<BookISBN xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" i:nil="true"/>
<BookingId>1</BookingId>
<UserID>2</UserID>
</Bookings>
<Bookings>
<BookISBN xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" i:nil="true"/>
<BookingId>2</BookingId>
<UserID>2</UserID>
</Bookings>
</ArrayOfBookings>  

POST-контроллер для бронирований.

    // POST api/Bookings
    [ResponseType(typeof(Bookings))]
    public IHttpActionResult PostBooking(Bookings Booking)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        db.Bookings.Add(Booking);
        db.SaveChanges();

        return CreatedAtRoute("DefaultApi", new { id = Booking.BookingId }, Booking);
    }

Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Я должен был включить / ссылаться на него специально

 db.Entry(Booking).Reference(b => b.BookISBNList).Load();
0 голосов
/ 27 мая 2018

Вы должны украсить свое действие с HttpPost;

[HttpPost]
[ResponseType(typeof(Bookings))]
public IHttpActionResult PostBooking(Bookings Booking)
...