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