好的,这听起来可能有点“非正统”,但是……使用 VS2010 和新的 POCO t4 实体框架模板(演练:实体框架的 POCO 模板),我可以生成不错的 POCO。然后,我可以在 WCF 服务中使用这些 POCO(作为 DTO),基本上从 EDM 一直到客户端。这家伙在做什么(带有 EF 4.0 和 WCF 4.0 的 POCO),除了一切都是自动生成的。我知道实体和 DTO“应该”是不同的,但在这种情况下,我正在处理客户端和服务器,并且在模型中自动生成 DTO 有一些真正的优势。
我的问题是,当我传输具有关系的实体时,客户端生成的集合(ICollection)具有只读值集,因此我无法操纵该关系。例如,检索现有订单时,我无法将产品添加到 Products 集合客户端...... Products 集合是只读的。
我宁愿做一堆客户端“订单编辑”,然后发回更新的订单,而不是进行数十次服务器往返(例如 AddProductToOrder(product))。我也不想在 Entity 和 DTO 之间进行大量的转换。所以总而言之,这对我来说看起来不错……除了只读部分。
有没有解决方案,或者这对 SOA 颗粒来说太过分了?