【问题标题】:Equivalent Odata WCF Service Functionality with OData Controller与 OData 控制器等效的 Odata WCF 服务功能
【发布时间】: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 控制器,我目前需要为每个实体使用两个不同的控制器,但我想要一个通用控制器。

【问题讨论】:

    标签: c# entity-framework wcf odata


    【解决方案1】:

    听起来你需要 RESTier:

    Restier 是 WCF 数据服务的精神继承者。代替 使用当前的 Web API + OData 生成无穷无尽的样板代码 工具链,RESTier 帮助你建立一个标准化的、可查询的 只需几分钟即可完成基于 HTTP 的 REST 接口。这只是 开始。

    与之前的 WCF 数据服务一样,Restier 提供了简单且 之前塑造查询和拦截提交的直接方法 在他们访问数据库之后。和 Web API + OData 一样,你仍然 可以灵活地添加您自己的自定义查询和操作 您已经熟悉的技术。

    https://github.com/OData/RESTier

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 2013-11-16
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多