【发布时间】:2013-11-27 12:08:45
【问题描述】:
在我的 OData 控制器中,我将我的 EF 实体转换为 DTO,因为该实体包含许多 UI 不使用的字段。
此问答 (ASP.NET WebApi OData support for DTOs) 展示了如何将 OData URI 中的查询选项应用于 EF 查询并返回 DTO。这太好了,这意味着我得到了查询数据库的好处以及序列化较小实体的好处。
但是,当我需要更新时,如何将带有修补字段的 Delta 应用到我的实体?
实体中的字段名称与 DTO 不匹配。
我可以使用 Delta 中更改的字段集合,但我会映射所有字段名称并使用反射来更新实体中的所有属性。
有没有更好的方法?
我是否应该使用我的实体而不是 DTO 并使用 odata $select 参数来减少线路上数据的大小。
我是否应该只恢复到 WebAPI 并拥有仅采用所需参数的单独更新函数,例如 UpdateStartDate(int id, DateTime newStartDate)
【问题讨论】:
-
您是否使用自动映射器来定义映射?
-
是的,我正在使用 AutoMapper 进行映射。
标签: entity-framework asp.net-web-api odata