【问题标题】:Web API with EF 5 - JSON Response Explanation带有 EF 5 的 Web API - JSON 响应说明
【发布时间】:2012-11-11 10:37:00
【问题描述】:

我一直在使用带有 EF Code First 5 的 MVC 4 Web API。我有这些 POCO:

public class Vehicle
{
    public int Id { get; set; }
    public int VehicleMakeId { get; set; }
    public int Model { get; set; }
    public int Year { get; set; }
    public int FuelType { get; set; }
    public int NoOfSeats { get; set; }   
    public virtual VehicleMake VehicleMake { get; set; }
}    

public class VehicleMake
{
    public int Id { get; set; }
    public string Description { get; set; }
}

还有一个 Web API 控制器调用:'http://localhost:63779/api/'vehicles 和一个如下所示的 GET:

public IEnumerable<Vehicle> Get()
{
   return Uow.Vehicles.GetAll().OrderBy(v => v.VehicleMake.Description);
}

我可以将 JSON 结果返回给浏览器:

{
   id: 1,
   vehicleMakeId: 1,
   model: 1,
   year: 2004,
   fuelType: 2,
   noOfSeats: 1,
   vehicleMake: null
}

注意 vehicleMake 为空。但是,在单步执行代码时,对象确实具有正确的值。

是否可以查看对象的 JSON 响应?在我猜什么是查找属性中它甚至是可取的吗?

我意识到这里缺少很多代码,但希望有人能够解释这里发生的事情。如果没有,我可以发布更多信息。

谢谢

【问题讨论】:

    标签: c# json entity-framework asp.net-web-api


    【解决方案1】:

    您的 VehicleMake 已延迟加载。当您使用调试器查看它时,它会立即加载,因此您需要将其包含在查询中:

    public IEnumerable<Vehicle> Get()
    {
       return Uow.Vehicles.GetAll().Include(v => v.VehicleMake)
               .OrderBy(v => v.VehicleMake.Description);
    } 
    

    【讨论】:

    • 谢谢。 .Include 不可用,我认为它只能从 IQueryable 获得。
    • Uow.Vehicles 上可用吗?
    • 它是工作单元。它具有 EF DBCONtext 和存储库。要发布的代码非常多。
    • 你能得到一个车辆的 DbSet 吗?
    • 添加“使用 System.Data.Entity”以获取带有 lambda 的 Included()。
    猜你喜欢
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    相关资源
    最近更新 更多