c# – WCF DataServices和Mapped DTO

我有一个域模型服务,我想向客户端公开数据.服务具有典型的体系结构:数据库,ORM(EF),具有域模型的业务层.

我想使用WCF DataServices向客户端公开数据,但我无法将数据对象从域模型发送到客户端.我将使用DTO与客户端进行交互,并且我有dto< =>数据对象映射.

DataServices有反射提供程序,在这种情况下看起来很好(让我们考虑只读方案).但反射提供者需要IQueryable< dto>要暴露的财产.这就是问题所在.所以我看到以下方法来解决它:

>加载所有域对象,将所有域对象映射到dtos并返回结果dtos.如果存在许多域对象,那真的很糟糕.
>创建“linq2dto”提供程序并生成动态对应的“linq2EF”查询,在查询实现时从db获取数据对象并执行映射.它听起来不错,但正如我所看到的,这是一项复杂的任务.

所以伙计们,我需要帮助.我不想写(并支持!)新的一个linq提供者.可能有某些“一般linq2anyware”实现我可以使用?

另一方面,我真的无法将数据对象暴露给客户端并使用DataServices EF提供程序.有没有一些简单的方法来实现这种映射?

最佳答案 不幸的是,如果你真的开始使用DTO,你将需要承担执行查询树转换到EF可以使用的工作.这很可能会让您进入自定义提供商区域,这是您必须处理的另一个问题.

具体来说,对于查询树转换,您可能会查看类似于re-linqIQ toolkit的内容.

我们可以在关于您为什么需要DTO的问题的评论中进行简短的对话吗?我认为如果他们能够理解这个细节,这个问题对其他人来说会更有用.

点赞