【发布时间】:2012-08-07 18:32:38
【问题描述】:
我有一个带有域模型的服务,我想向客户公开数据。服务有典型的架构:数据库、ORM(EF)、带有领域模型的业务层。
我想使用 WCF DataServices 向客户端公开数据,但我无法将数据对象从域模型发送到客户端。我将使用 DTO 与客户端交互,并且我有 dto 数据对象映射。
DataServices 具有反射提供程序,在这种情况下似乎很好(让我们考虑只读方案)。但是反射提供者需要 IQueryable<dto> 属性被暴露。这就是问题所在。所以我看到了以下解决方法:
- 加载所有域对象,将它们全部映射到 dtos 并返回结果 dtos。如果存在许多域对象,则方法非常糟糕。
- 创建“linq2dto”提供程序并动态生成对应的“linq2EF”查询,在查询实现点从数据库获取数据对象并执行映射。听起来不错,但在我看来,这是一项复杂的任务。
各位,我需要帮助。我不想编写(和支持!)一个新的 linq 提供程序。可能有一些我可以使用的“通用 linq2anyware”实现?
另一方面,我真的不能向客户端公开数据对象并使用 DataServices EF 提供程序。有没有一些简单的方法来实现这种映射?
【问题讨论】:
-
先问一个显而易见的问题:你真的需要 DTO 吗?使用 EF 编写代码并不能充分满足您的需求?
标签: c# wcf-data-services dto