【问题标题】:How to send post request for related data from angular to .NET core api如何将相关数据的发布请求从 Angular 发送到 .NET 核心 api
【发布时间】:2020-07-27 11:13:58
【问题描述】:

我是 Angular 和 .NET 核心的新手,我正在尝试通过 .net 核心 api 将相关数据存储到 sqlserver。 我的问题是订单控制器正在接收一个订单对象它将如何存储具有相同 OrderId 的订单项,这些订单项将在订单表中生成?另外我无法调用订单控制器,我的服务方法返回此错误

加载资源失败:服务器响应状态为 500 () 发布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; }
}

【问题讨论】:

    标签: angular asp.net-core entity-framework-core asp.net-core-webapi


    【解决方案1】:

    如果我正确理解了您的请求,您希望添加与尚不存在的订单相关的文章。用技术术语来说,您没有在文章中将其指示为外键的主顺序键。

    当您在 DbContext 中添加条目并对此 DbContext 进行备份时,唯一标识符会被赋值并在先前添加的对象上返回给您。

    如果在 DbContext 中添加“Order”对象,则无法在其中指明唯一标识符,因为 SQL 会处理它。如果您创建 DbContext.SaveChanges(),请知道订单的唯一标识符将在之前添加到您的 DbContext 的“订单”对象的实例上进行评估。

    您只需在数据库中添加带有订单唯一标识符的文章。

    如果您有任何问题,我会随时待命,我们很快再见!

    【讨论】:

    • OrderId 是 Order Table 中的主键,OrderItems 中的 OrderId 是外键,我知道当我添加条目时它会返回添加的条目,但我想要的是发送两个订单和 orderitems 表值,它应该自动设置 order 表中的主键和与 orderitems 表中的外键相同的键值。
    猜你喜欢
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 2017-01-29
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 2019-07-15
    相关资源
    最近更新 更多