带自定义筛选器的WCF数据服务

时间:2011-11-30 17:08:12

标签: c#-4.0 wcf-data-services odata

我首先使用WCF数据服务和实体框架4.1代码创建服务。我需要根据uri段进行一些过滤。基本上,我们有一个多租户数据库,需要要求租户ID的字符串表示作为uri的一部分传递。例如,uri看起来像这样:

http://myservice.com/client123/Users

然后,Client123将用于创建仅针对客户端数据的上下文过滤。

我指向http://www.odata.org/developers/odata-sdk处OData示例代码的方向。我看到了创建默认数据的代码,并使用sessionid进行了缓存(我也添加了会话管理的逻辑)。但是,使用DSPContext等完成它的方式似乎不应该是基于实体框架的实现所需的大部分内容。 (至少我的理解是,如果您使用的是Entity Framework,则不需要创建自定义上下文。)

有人知道使用基于标准实体框架的数据源进行此类实现的好例子吗?或者,您可以给我一些如何修改现有sdk代码的建议吗?我主要坚持元数据创建(这甚至需要吗?)和资源创建。

提前致以最诚挚的问候和谢意!

1 个答案:

答案 0 :(得分:0)

如果您使用基于EF的服务,其服务将始终保持相同,无论客户端ID如何,那么您不需要任何花哨的自定义提供程序。只需使用SDK中的技巧获取正确的客户端ID,公开“普通”基于EF的WCF DS服务,并在DataService.CreateDataSource覆盖中使用客户端ID为该客户端创建正确的EF上下文。