【问题标题】:odata routing not working as expectedodata 路由未按预期工作
【发布时间】:2015-09-09 14:46:27
【问题描述】:

这是我第一个使用 asp.net MVC 的 OData 应用程序,但我无法使其工作。我需要从SummaryController 返回一个Summary 对象,但遇到了问题。

路由配置-

public static IEdmModel CreateEdmModel()
{
    ODataConventionModelBuilder modelBuilder = new ODataConventionModelBuilder();
    modelBuilder.EntitySet<Summary>("Summary");
    return modelBuilder.GetEdmModel();
}

public static void Register(HttpConfiguration config)
{
    config.Routes.MapODataRoute("OData", "odata", CreateEdmModel());
    config.EnableQuerySupport();    
    config.EnableSystemDiagnosticsTracing();
}

控制器和动作方法 -

public class SummaryController : ODataController
{
        public Summary Get()
        {
             //....
             return someObj;
        }
}

行不通的路线——

/odata/Summary

谁能帮我理解如何使路由工作?

【问题讨论】:

  • 你所做的对我来说看起来不错。我认为它应该有效。

标签: asp.net-mvc asp.net-web-api odata


【解决方案1】:

在模型中,您将 Summary 设置为 EntitySet,这将返回 Summary 对象的集合。如果您希望该 URL 始终返回一个对象,那么您需要一个 Singleton。

CreateEdmModel 方法应如下所示:

public static IEdmModel CreateEdmModel()
{
    ODataConventionModelBuilder modelBuilder = new ODataConventionModelBuilder();
    modelBuilder.Singleton<Summary>("Summary");
    return modelBuilder.GetEdmModel();
}

【讨论】:

    猜你喜欢
    • 2014-05-02
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多