【问题标题】:How to remove navigation properties empty array of EF from WebAPI response json?如何从 WebAPI 响应 json 中删除导航属性的 EF 空数组?
【发布时间】:2016-07-28 15:36:29
【问题描述】:

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

除此之外,json 响应在我的响应中添加了 $.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"
}

【问题讨论】:

  • 一些代码 sn-p 为您的问题提供了更多意义。
  • 通常你不会直接返回领域模型。您需要将它们转换为 POCO 对象并将它们返回公共。在创建 POCO 时,您可以指定要向世界公开的属性。
  • 这种转换不是开销吗?就像将域模型转换为特定的 poco 对象和用户,然后从 poco 到域模型。

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


【解决方案1】:

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

ASP.NET 文档是了解如何执行此操作的良好开端。 http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization

通常,您应该避免暴露您的实体,而是映射到 ViewModel POCO。但是,在一个简单的应用程序中,您可以侥幸做到这一点。

【讨论】:

  • 您能否指导我了解如何实现 ViewModel POCO。我首先使用数据库方法,然后使用 EF 6 从模型生成代码。代码不是基于 POCO 的类吗?我想使用 S.O.L.I.D 实现我的 API。对不起,如果我太天真了,
猜你喜欢
  • 2015-03-03
  • 2018-10-22
  • 2017-04-24
  • 1970-01-01
  • 2015-01-30
  • 1970-01-01
  • 2023-03-29
  • 2018-01-11
  • 1970-01-01
相关资源
最近更新 更多