我退回了项目中的两种方法(WCF REST服务)。
请在此处建议通过客户端展示我的实体的最佳设计。 或者,我可能必须编写实体模型的自定义类(数据契约)。但是,这会增加代码(用于在Custom和Entity之间转换对象)并降低可维护性。
请建议有什么最好的方法来揭露我的实体。您的建议很有价值,也非常感谢。
答案 0 :(得分:0)
Fowlers分布式对象设计的第一定律规定,“不要分发你的对象”。这只是意味着给他们一份副本,而不是实际的实体本身。如果要在数据协定命名空间中创建实体的镜像副本,则在数据库架构需要更改时,可以保留更大的灵活性。如果您的数据合同最初与您的实体相同,则AutoMapper等工具将消除您需要编写的所有转换代码。配置完成后,将您的实体转换为数据合同就变成了1个班次:
Mapper.Map<CustomerDto>(customer);
这会占用您的客户实体,并为您提供新客户dto。这是所有基于约定的,并通过匹配属性名称来工作。即使数据合同与实体不完全相同,您也只需要提示AutoMapper以获取它无法自行解决的属性。