如何从WebAPI响应json中删除EF的导航属性空数组

本文关键字:EF 导航 属性 数组 删除 WebAPI 响应 json | 更新日期: 2023-09-27 17:59:09

我用EF创建了一个WebApi项目,当将其配置为json响应时,它开始给我一个json查询对象(实体),其中包含导航属性中的所有数据。我关闭了EF的延迟加载,现在我可以看到我的响应不包含任何来自导航实体的数据。但是,仍然很少有空数组作为响应。我怎样才能彻底摆脱它们?

除此之外,json-response正在向我的响应添加$.id属性,我们可以也删除它吗?

{
$id: "1",
ChargePoints: [ ],
ChargerActionHistory: [ ],
ChargingBoxModels: null,
ChargingStations: null,
StatusCodes: null,
WallSettings: null,
Heartbeats: [ ],
PK_ChargingBoxID: 2,
FK_ChargingStationsID: 1,
FK_WallSettingsID: 1,
FK_StatusCodeID: 1,
FK_ChargingBoxModelID: 1,
DeviceID: "HUB399209-UK",
ChargingBoxName: "ArneCharger",
CSEndpoint: null,
CBEndpoint: null,
CSPort: null,
CBPort: null,
DeviceIP: null,
OperationalPhase: null,
HeartbeatInterval: 5,
MeterInterval: 10,
Notes: "test device",
CommissionedDate: "2016-05-23T13:52:07.193",
ExpiryDate: "2016-06-23T13:52:07.193",
isAuthenticated: true,
isPublic: true,
isActive: true,
Keys: "39c5f761-5c08-4b3d-9b88-adcfd75ss26b"
}

如何从WebAPI响应json中删除EF的导航属性空数组

这可以使用序列化属性来完成。

ASP.NET文档是如何做到这一点的良好开端。http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization

通常,您应该避免暴露实体,而是映射到ViewModel POCO。然而,在一个简单的应用程序中,您可以不必执行此操作。