.net 具有反射提供程序的WCF OData服务
我们需要为活动提要提供一个API(想想Facebook),我们决定尝试一下OData。我们使用的是.NET,所以我们选择了WCF数据服务,但我们不使用实体框架(或任何其他ORM),所以我们将使用反射提供程序。因为我们的检索方法具有复杂的业务逻辑,所以我们决定将它们公开为服务操作。但是,我们希望将删除/更新和单个实体选择公开为普通ODataREST资源。我的问题是,我们如何为反射提供程序实现一个数据源,该数据源限制对集合的访问,但允许对单个实体的访问(按键请求)、允许删除/放置/张贴动词,以及允许访问单个实体的子集合(即服务/类别(1)/产品)。基本上,我只想限制对基本集合的访问(即服务/类别或服务/产品)这里没有很好的答案 在InitializeService(..)中可以使用两种设置 不幸的是,这两种方法都不能完全满足您的要求:.net 具有反射提供程序的WCF OData服务,.net,wcf,odata,.net,Wcf,Odata,我们需要为活动提要提供一个API(想想Facebook),我们决定尝试一下OData。我们使用的是.NET,所以我们选择了WCF数据服务,但我们不使用实体框架(或任何其他ORM),所以我们将使用反射提供程序。因为我们的检索方法具有复杂的业务逻辑,所以我们决定将它们公开为服务操作。但是,我们希望将删除/更新和单个实体选择公开为普通ODataREST资源。我的问题是,我们如何为反射提供程序实现一个数据源,该数据源限制对集合的访问,但允许对单个实体的访问(按键请求)、允许删除/放置/张贴动词,以及允许
EntitySetRights.ReadSingle
限制您仅从该集合返回一个对象。它失败,因为它不允许此/Categories(1)/产品,并且它还允许/Categories?$filter=。。。返回一行SetEntitySetPageSize
将影响服务器的初始负载量限制为仅一条记录,但您可以按照$skiptoken一次获取一条记录的其余数据,就像(1)它允许任意查询,而不仅仅是键谓词Alex(OData项目经理)非常感谢。在评估选项时,我实际上阅读了您的包装示例和自定义数据提供程序系列。第一个解决方案实际上似乎并不那么糟糕。我必须检查有多少实体将有子集合,以及有多少实体需要处理。我想知道的另一件事是,在这种情况下是否可以抛出异常。这看起来很糟糕,但其他的选择也不尽如人意。包裹液体容器看起来真的很痛苦。老实说,我宁愿放弃OData解决方案,转而使用其他服务类型,也不愿这样做。
config.SetEntitySetAccessRule("Feed", EntitySetRights.ReadSingle);
config.SetEntitySetPageSize("Feed", 1);