如何在Asp.Net Core中使用OData

4

我一直在尝试在Dot Net Core中使用OData,但一直没有成功。我感觉这个可能还没有迁移到相同的版本(我可能错了)。在这种情况下,是否有任何在.Net Core中替代OData的方法?

欢迎提供建议。


1
请参考此链接 - https://dev59.com/PVkS5IYBdhLWcg3w8aYL - Sanket
1个回答

2
你可以安装最新的AspNetCore.Odata nugget包并从那里开始: https://www.nuget.org/packages/Microsoft.AspNetCore.OData/ 在Startup.cs类中,请确保配置您的服务使用OData:
 public void ConfigureServices(IServiceCollection services)
    {

        services.AddOData();
        services.AddMvc();
    }

此外,在Configure方法中,请确保映射Odata Service路由:
 app.UseMvc(routes =>
        {
            routes.Count().Filter().OrderBy().Expand().MaxTop(null);
            routes.MapODataServiceRoute("odata", "odata", builder.GetEdmModel());
            routes.EnableDependencyInjection();
        });

感谢提供正确的配置。我该如何访问该服务?我的控制器路由是api/students,当我访问这个URL时没有得到任何响应。 - user3625533
我不太明白你的问题。除了在Startup.cs文件中进行配置外,您无需访问任何服务。您需要创建自己的控制器并创建一个方法来处理api/students并返回一些数据。 - Iustinian Andrioaie
感谢您的回复。我找到了我的Dapper扩展程序的问题,它导致了错误并且没有从数据库中返回任何行,因此我得到了一个空响应。上述配置对我有用。 - user3625533
现在我有另一个问题,涉及到使用OData处理版本。我有两个API的版本,我想为第二个版本实现OData,但是当我提供相同的配置时,会与第一个版本的API发生路由冲突。我该如何告诉OData仅用于第二个版本的API,而第一个版本应按原样运行? - user3625533
我认为您不能在路由中使用2个不同的配置。我最好的建议是为您的v2功能创建一个新项目,并将v2添加到路径中。例如,../odata/v2/Entities。 - Iustinian Andrioaie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接