Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF数据服务使用基于EF的存储库中的数据_C#_Wcf_Entity Framework_Repository_Odata - Fatal编程技术网

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

C# WCF数据服务使用基于EF的存储库中的数据,c#,wcf,entity-framework,repository,odata,C#,Wcf,Entity Framework,Repository,Odata,我们有一个基于EF4/POCO的现有存储库,并且运行良好。我们希望使用WCF数据服务添加服务层,并寻求一些最佳实践建议 到目前为止,我们已经开发了一个具有IQueryable属性的类,getter触发存储库的“get all users”方法。到目前为止,问题有两个方面: 1) 它要求我们修饰poco对象的ID字段,以告诉数据服务ID是哪个字段。这现在意味着我们的poco对象不是“纯”的 2) 它无法找出对象之间的关系(我想这是显而易见的) 我现在已经停止了这种方法,我想也许我们应该从存储库中公

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

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

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

2) 它无法找出对象之间的关系(我想这是显而易见的)

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


有没有人得到过将存储库模式与WCF数据服务结合使用的建议或示例?

我想这是一个务实的问题。装饰POCO会破坏其他东西吗?如果不是,也许这是最好的方法


WCF数据服务和oData是非常新的,我也一直在寻找指导,它似乎有点单薄。

您能否进一步扩展您想要公开的内容,以及谁将使用它

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

  • 拥有MyRepository:Objectcontext和 MyDataService:DataService拆分逻辑,因此 创建助手。我想我们可能已经继承了存储库了-(在我输入这个时,我确实想到了这一点!)
  • 查询和更改拦截器是您的朋友,但是 应委托给助手(或基类)以确保 干的ie-如果您的存储库已经存在 拥有GetAllUsers,并做到了这一点 myservice.svc/Users无法处理, 您可能需要实现一个查询 拦截器来进行过滤- 同样,DRY指的是一个助手(或基本方法),它 存储库和拦截器可以 使用
  • asp.net兼容性允许您 很好地接入到身份验证/ 授权-在查询中 拦截器,这是一个很好的方法 确保只允许您查看 你可以看到的东西
几个陷阱

  • 如果它是基于Flash/Flex的,您将 可能与Flash有关/ Flex无法使用HTTP 放置/合并或删除。你四处走动 这是通过使用x-httpmethod-override实现的

  • 如果是javascript/jquery,则 确定打开了json吗


  • 总的来说,我真的很喜欢它,它是一种公开API的超快速方式,如果您没有繁重的业务逻辑,它工作得很好。

    没有,但我还发现poco需要使用IQueryable定义他们的关系,而不是T4生成的ICollection;你认为这会有很大的影响吗?+1个好问题,这方面有什么新的吗?