是否可以通过 JSON 中的对象获取响应主体? .Net、C#

问题描述 投票:0回答:1

我创建了一个名为“销售”的模型。它具有外键,例如:“idPerson”、“idCar”和“idReseller”。 但在 GET 方法响应正文中,我收到了以下响应结构:

  {
        "id": 1,
        "idPerson": 1,
        "person": null,
        "idCar": 1,
        "car": null,
        "idReseller": 1,
        "reseller": null,
        "price": 50.00
    }

我的疑问是:如果值为 null,id 不应该为我带来该外键的对象主体吗?我不知道这是否可以在获取响应中实现。 我正在使用 .Net、C# 和 Sql Server。

我创建了这样的模型:(我使用实体框架,代码优先)

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace CarQuery__Test.Domain.Models
{
    public class Sale
    {
        [Key]
        public int Id{ get; set; }

        [ForeignKey("Person")] 
        public int IdPerson { get; set; }   
        public Person? Person { get; set; }

        [ForeignKey("Car")]
        public int IdCar { get; set; }  
        public Car? Car { get; set; }

        [ForeignKey("Reseller")]
        public int IdReseller { get; set; } 
        public Reseller? Reseller { get; set; }

        public decimal Price { get; set; }      

    }
}

有什么问题吗?

我期待着该物体的回应,但我不知道这是否可能。

c# .net entity-framework
1个回答
0
投票

默认情况下,实体框架不包含相关实体,因此您需要使用急切加载或延迟加载等技术。

在您的情况下,您可以使用预先加载在响应中包含相关实体。以下是修改 GET 方法以包含相关实体的方法:

输入你的方法名称

public IActionResult GetSale(int id)
{
    var sale = _context.Sales
        .Include(s => s.Person)
        .Include(s => s.Car)
        .Include(s => s.Reseller)
        .FirstOrDefault(s => s.Id == id);

    if (sale == null)
    {
        return NotFound();
    }

    return Ok(sale);
}

在此代码中,.Include() 用于立即加载相关实体(人、汽车、经销商)以及销售实体。这样,当您检索 Sale 对象时,其相关实体也将填充在响应中。

© www.soinside.com 2019 - 2024. All rights reserved.