假设我们有两个实体类,Order和Product,Order可以包含多个Product。我们可以使用以下方法在ASP.NET Core Web API中发布一对多关系数据:
1.首先,在Order类中创建一个ICollection类来表示该订单所包含的多个Product。
public class Order
{
public int OrderId { get; set; }
public string OrderName { get; set; }
public ICollection
2.在Product类中添加一个Order属性以保存该产品所属的订单。
public class Product { public int ProductId { get; set; } public string ProductName { get; set; } public int OrderId { get; set; } public Order Order { get; set; } }
3.添加Web API控制器来上传订单及其所包含的产品。
[Route("api/[controller]")] [ApiController] public class OrdersController : ControllerBase { private readonly OrderContext _context;
public OrdersController(OrderContext context)
{
_context = context;
}
[HttpPost]
public async Task> PostOrder(Order order)
{
_context.Orders.Add(order);
await _context.SaveChangesAsync();
return CreatedAtAction("GetOrder", new { id = order.OrderId }, order);
}
[HttpPost("{orderId}/Products")]
public async Task> PostProduct(int orderId, Product product)
{
var order = await _context.Orders.FindAsync(orderId);
if (order == null)
{
return NotFound();
}
order.Products.Add(product);
await _context.SaveChangesAsync();
return CreatedAtAction("GetProduct", new { id = product.ProductId }, product);
}
}
注:使用“await _context.SaveChangesAsync()”方法,将更改提交到数据库。
4.使用Postman测试API,将订单及其所包含的产品上传至服务器。
在Postman中创建一个POST请求,在请求地址中输入:“https://localhost:44328/api/orders”,并在Body选项卡中,选择“JSON(application/json)”格式,并输入以下内容:
{ "orderName": "TestOrder", "products": [ { "productName": "Product1" }, { "productName": "Product2" } ] }
5.提交请求后,将订单及其所包含的产品上传至服务器,返回的结果如下:
{ "orderId": 1, "orderName": "TestOrder", "products": [ { "productId": 1, "productName": "Product1", "orderId": 1,