繁体   English   中英

WCF数据服务使用基于EF的存储库中的数据

[英]WCF Data Services consuming data from EF based repository

我们有一个基于EF4 / POCO的现有存储库,运行良好。 我们希望使用WCF数据服务添加服务层并寻找一些最佳实践建议。

到目前为止,我们已经开发了一个具有IQueryable属性的类,并且getter触发了存储库'get all users'方法。 到目前为止,问题有两方面:

1)它要求我们装饰poco对象的ID字段以告诉数据服务哪个字段是id。 这意味着我们的POCO对象不是“纯粹的”。

2)它无法弄清楚对象之间的关系(我猜这很明显)。

我现在已经停止了这种方法,我想也许我们应该从存储库中公开OBjectContext并使用EF的更多“自动”功能。

有没有人有任何关于在WCF数据服务中使用存储库模式的建议或示例?

我想这是一个务实的问题。 装饰POCO会破坏别的吗? 如果没有,也许这是最好的方式。

WCF数据服务和oData都很新,我一直在寻找指导,看起来有点薄。

您是否可以进一步扩展您想要展示的内容,以及谁将使用它?

到目前为止我在项目中看到的问题

  • 有一个MyRepository:Objectcontext和一个MyDataService:DataService拆分逻辑,所以我们创建了帮助器。 我想我们可以继承Repository - (字面意思只是想到了我输入的内容!)
  • 查询和更改拦截器是您的朋友,但应委托给帮助程序(或基类)以确保DRY。 ie - 如果你的存储库已经有了GetAllUsers,并且做了myservice.svc / Users无法处理的逻辑,你可能需要实现一个查询拦截器来进行过滤 - 再次DRY意味着一个帮助器(或基本方法),这两个存储库和拦截器可以使用。
  • asp.net兼容性允许您很好地利用身份验证/授权 - 在查询拦截器中,这是一种很好的方法,可以确保您只能看到您可以看到的内容。

几个陷阱....

  1. 如果它是基于Flash / Flex的,您可能会遇到Flash / Flex无法使用HTTP PUT / MERGE或DELETE的问题。 你可以通过使用x-httpmethod-override解决这个问题

  2. 如果是javascript / jquery,请确保打开json

总的来说,我真的很喜欢它,一种暴露API的超快速方式,如果你没有繁重的业务逻辑,它运行良好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM