与 OData 控制器等效的 Odata WCF 服务功能
Posted
技术标签:
【中文标题】与 OData 控制器等效的 Odata WCF 服务功能【英文标题】:Equivalent Odata WCF Service Functionality with OData Controller 【发布时间】:2019-12-28 21:45:08 【问题描述】:在一个项目中,我非常接近使用 WCF 服务和实体框架来实现 OData。使用 WCF 服务,我能够扩展 DataService,它能够将我的上下文转换为 OData 可查询的实体。除了使用 ODataController 之外,我想做同样的事情。理想情况下,我希望从一个控制器访问我的所有实体集。这可能吗?
这是我迄今为止尝试过的方法。 How do I bind multiple entity sets to one odata controller?
这是我在 wcf 服务中使用的方法
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, IncludeExceptionDetailInFaults = true)]
public class MyService : MSDataService.System.Data.Services.DataService<MyDataContext>
private SPWeb _web;
private string connectionString;
#region Constructor
/// <summary>
/// Default constructor
/// </summary>
public MyService() : base()
#endregion
#region Methods
protected override MyDataContext CreateDataSource()
return newMyDataContext();
public static void InitializeService(MSDataService::System.Data.Services.DataServiceConfiguration config)
config.SetEntitySetAccessRule("MyEntity1", MSDataService::System.Data.Services.EntitySetRights.AllRead);
config.SetEntitySetAccessRule("MyEntity2", MSDataService::System.Data.Services.EntitySetRights.AllRead);
config.DataServiceBehavior.MaxProtocolVersion = System.Data.Services.Common.DataServiceProtocolVersion.V2;
config.DataServiceBehavior.AcceptProjectionRequests = true;
config.UseVerboseErrors = true;
config.EnableTypeAccess("*");
config.SetEntitySetPageSize("*", 1000);
#endregion
MyDataContext 具有用于 MyEntity1 和 MyEntity2 的 DbSet。
对于 OData 控制器,我目前需要为每个实体使用两个不同的控制器,但我想要一个通用控制器。
【问题讨论】:
【参考方案1】:听起来你需要 RESTier:
Restier 是 WCF 数据服务的精神继承者。代替 使用当前的 Web API + OData 生成无穷无尽的样板代码 工具链,RESTier 帮助你建立一个标准化的、可查询的 只需几分钟即可完成基于 HTTP 的 REST 接口。这只是 开始。
与之前的 WCF 数据服务一样,Restier 提供了简单且 之前塑造查询和拦截提交的直接方法 在他们访问数据库之后。和 Web API + OData 一样,你仍然 可以灵活地添加您自己的自定义查询和操作 您已经熟悉的技术。
https://github.com/OData/RESTier
【讨论】:
我非常接近:blog.scottlogic.com/2015/12/01/generalizing-odata.html 如果这失败了,我将尝试 RESTier。谢谢!以上是关于与 OData 控制器等效的 Odata WCF 服务功能的主要内容,如果未能解决你的问题,请参考以下文章
您可以将 WCF 数据服务(ne OData、ne Astoria、ne ADO.NET 数据服务)与 NetTcpBinding 一起使用吗?