Как отправить запрос на отправку связанных данных от angular до. NET core api - PullRequest
0 голосов
/ 14 апреля 2020

Я новичок в angular и. NET core, я пытаюсь сохранить связанные данные в sqlserver через. net core api. Моя проблема заключается в том, что Контроллер заказов получает один объект Order, как он будет хранить элементы Order с тем же OrderId, который будет сгенерирован в Таблице заказов? Кроме того, я не могу вызвать контроллер заказов, мой сервисный метод возвращает эту ошибку

Не удалось загрузить ресурс: сервер ответил с состоянием 500 () POST https://localhost: 44378 / api / Orders 500

checkout.ts

  placeorder() {

    this.postservice.placeorder(this.orderdata.value, this.cart.selections)
  }

В этом коде orderdata.value - простые значения, а cart.selections список объектов

Сервисный код

  placeorder(orderdata: order, orderitems: orderItems): Observable<any[]>{
return this.http.post<any[]>(this.myAppUrl + 'api/Orders', [orderdata,orderitems]);}

Интерфейс заказа

export interface order{
  orderid: number;
  uid: number;
  orderdate: Date;
  orderstatus: string;

}

Интерфейс OrderItems

export interface orderItems extends Array<orderItem> {
}

export interface orderItem {
  productId?: number;
  productName?: string;
  productPrice?: number;
  quantityValue?: number;
}

Контроллер заказа

[HttpPost]
public async Task<ActionResult<Orders>> PostOrders(Orders orders)
{
  _context.Orders.Add(orders);
  await _context.SaveChangesAsync();

   return CreatedAtAction("GetOrders", new { id = orders.OrderId }, orders);
 }

Класс модели заказа

    public partial class Orders
{
    public Orders()
    {
        OrderItems = new HashSet<OrderItems>();
    }

    public int OrderId { get; set; }
    public int? Uid { get; set; }
    public DateTime? OrderDate { get; set; }
    public string OrderStatus { get; set; }

    public virtual ICollection<OrderItems> OrderItems { get; set; }
}

Класс модели OrderItems

public partial class OrderItems
{
    public int ItemId { get; set; }
    public int? ProductId { get; set; }
    public string ProductName { get; set; }
    public int? ProductPrice { get; set; }
    public int? ProductQuantity { get; set; }
    public int? OrderId { get; set; }

    public virtual Orders Order { get; set; }
}

1 Ответ

0 голосов
/ 14 апреля 2020

Если я правильно понял ваш запрос, вы хотели бы добавить статьи, связанные с заказом, который еще не существует. С технической точки зрения у вас нет первичного ключа заказа, чтобы указать его в качестве внешнего ключа в статьях.

Когда вы добавляете запись в свой DbContext и делаете резервную копию этого DbContext, уникальный идентификатор оценивается и вернули вам ранее добавленный объект.

Если вы добавите объект "Order" в свой DbContext, вы не сможете указать уникальный идентификатор там, потому что SQL позаботится об этом. Если вы создаете DbContext.SaveChanges (), знайте, что уникальный идентификатор заказа будет оцениваться в экземпляре объекта «Заказ», ранее добавленном в ваш DbContext.

Вам просто нужно добавить статьи в Ваша база данных с уникальным идентификатором заказа.

Я останусь доступным, если у вас есть какие-либо вопросы, до скорой встречи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...