REST WCF - 公开实体或将自定义类转换为Entity类的最佳方法,反之亦然

时间:2013-06-26 14:38:05

标签: wcf rest entity dataservice

我退回了项目中的两种方法(WCF REST服务)。

  1. 从WCFDataServices开始,因为它支持完整的OData服务堆栈,但由于对CRUD操作的更多验证要求,使用EF切换到“WCF服务”。
  2. 现在考虑退回使用自我跟踪实体向客户端公开实体,正如许多文章所说,微软不再支持STE并且更喜欢使用OData。(但WCFDataService不适合我)。
  3. 请在此处建议通过客户端展示我的实体的最佳设计。 或者,我可能必须编写实体模型的自定义类(数据契约)。但是,这会增加代码(用于在Custom和Entity之间转换对象)并降低可维护性。

    请建议有什么最好的方法来揭露我的实体。您的建议很有价值,也非常感谢。

1 个答案:

答案 0 :(得分:0)

Fowlers分布式对象设计的第一定律规定,“不要分发你的对象”。这只是意味着给他们一份副本,而不是实际的实体本身。如果要在数据协定命名空间中创建实体的镜像副本,则在数据库架构需要更改时,可以保留更大的灵活性。如果您的数据合同最初与您的实体相同,则AutoMapper等工具将消除您需要编写的所有转换代码。配置完成后,将您的实体转换为数据合同就变成了1个班次:

Mapper.Map<CustomerDto>(customer);

这会占用您的客户实体,并为您提供新客户dto。这是所有基于约定的,并通过匹配属性名称来工作。即使数据合同与实体不完全相同,您也只需要提示AutoMapper以获取它无法自行解决的属性。