2016-07-28 15 views
0

私はEFでWebApiプロジェクトを作成しました.jsonレスポンス用に設定されていると、ナビゲーションプロパティのすべてのデータを含むjsonオブジェクトのクエリ(エンティティ)が提供され始めました。私はEFからの怠惰な読み込みをオフにしましたが、私の応答にナビゲーションエンティティのデータが含まれていないことがわかりました。しかし、依然として、応答として示された空の配列はほとんどありません。どうすればそれらを完全に取り除くことができますか?ナビゲーションプロパティを削除するにはWebAPIレスポンス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" 
} 
+0

いくつかのコードスニペットは、あなたの問題にもっと意味を与えます。 – Venky

+1

通常、ドメインモデルは直接返されません。それらをPOCOオブジェクトに変換して公開する必要があります。 POCOを作成する際に、どのプロパティをワールドに公開するかを指定できます。 – Venky

+0

これはオーバーヘッドではありませんか?コンバージョンドメインモデルを特定のpocoオブジェクト、ユーザー、そしてポコからドメインモデルに変換します。 – Shahzad

答えて

1

これは、シリアル化属性を使用して行うことができます。

ASP.NETドキュメントは、これを行う方法の良いスタートです。 http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization

エンティティを公開しないで、代わりにViewModel POCOにマッピングする必要があります。しかし、単純なアプリケーションでは、これを行うことで逃げることができます。

+0

ViewModel POCOの実装方法に私を導くことができます。私は最初にデータベースにアクセスし、EF 6を使用してモデルからコードを生成しました。コードはPOCOベースのクラスですか?私はS.O.L.I.Dを使用してAPIを実装したいと思います。 申し訳ありませんが、 – Shahzad

関連する問題