我有一个带有域模型的服务,我想向客户公开数据。服务有典型的架构:数据库、ORM(EF)、带有领域模型的业务层。
我想使用 WCF DataServices 向客户端公开数据,但我无法将数据对象从域模型发送到客户端。我将使用 DTO 与客户端交互,并且我有 dto<=> 数据对象映射。
DataServices 有反射提供者,在这种情况下似乎很好(让我们考虑只读场景)。但是反射提供者需要IQueryable<dto>
暴露属性。这就是问题所在。所以我看到以下解决方法:
- 加载所有域对象,将它们全部映射到 dtos 并返回结果 dtos。如果存在许多域对象,则方法非常糟糕。
- 创建“linq2dto”提供程序并动态生成对应的“linq2EF”查询,在查询实现点从数据库获取数据对象并执行映射。听起来不错,但正如我所见,这是一项复杂的任务。
所以,伙计们,我需要帮助。我不想编写(和支持!)一个新的 linq 提供程序。可能有一些我可以使用的“通用 linq2anyware”实现?
另一方面,我真的不能向客户端公开数据对象并使用 DataServices EF 提供程序。有没有一些简单的方法来实现这种映射?