【发布时间】:2012-07-02 17:18:53
【问题描述】:
我需要一些关于为以下场景定义 DataContracts 的最佳方式的指导: 1. 我有 2 种网络方法,一种用于上传原始数据 2. 此数据在服务器上用于某些计算。即一个项目有一组计算, 3. 所以我的实体设计是这样的,Item 实体有 Calculation 实体的集合。该集合未标记为 DataMember。 4. GetItemDetails 方法返回每个项目及其计算集合。 5. 我最终为 Upload 和 GetItemDetails 操作定义了 2 个不同的 DataContract,因为 Item 是我的主要实体,用于我的所有业务逻辑操作,但它的计算集合是在服务器端生成的数据,必须按需返回(获取项目详细信息)。由于它正在处理数据,因此在上传时公开它似乎是不合适的,因为计算集合中不需要输入。 6. 在我的 GetItemDetails 方法中,我使用“项目”实体并分别加载项目集合。计算集合,然后将其转换为我的输出数据合同,其中项目和集合都暴露了。
这种方法的缺点是必须为相同的实体表示维护 2 个数据合约。 我试图搜索在 GetItemDetails 方法的 Calculation 集合上动态添加 DataMember 属性的选项,但没有成功。 我希望情况很清楚。我的问题是在这种情况下定义数据合同的最佳方式是什么,这样客户端就不必处理 2 个不同的代理类来表示相同的上传和获取实体。如果两者都使用相同的实体,这是否是一个正确的解决方案,以便我的上传合同公开(然后忽略任何输入)计算集合,即使用户不希望将其提供给我的上传操作?
我将不胜感激。
【问题讨论】:
标签: wcf datacontracts