私の OData コントローラーでは、UI で使用されない多くのフィールドがエンティティに含まれているため、EF エンティティを DTO に変換しています。
この質問と回答 ( ASP.NET WebApi OData support for DTOs ) は、OData URI からのクエリ オプションを EF クエリに適用して DTO を返す方法を示しています。これは素晴らしいことです。つまり、DB にクエリを実行する利点と、小さなエンティティをシリアル化する利点を得ることができます。
ただし、エンティティを更新する必要がある場合、パッチを適用したフィールドを含むデルタをエンティティに適用するにはどうすればよいですか?
エンティティのフィールド名が DTO と一致しません。
デルタから変更されたフィールド コレクションを使用できますが、すべてのフィールド名をマップし、リフレクションを使用してエンティティ内のすべてのプロパティを更新する必要があります。
より良い方法はありますか?
DTO の代わりにエンティティを使用し、odata $select パラメーターを使用して、ネットワーク上のデータのサイズを縮小する必要がありますか?
WebAPI に戻って、必要なパラメーターのみを受け取る個々の更新関数を使用する必要があります。たとえば、UpdateStartDate(int id, DateTime newStartDate)