C# 如何在ASP.NET中创建OData v2端点?
我正在尝试使用ASP.NET Web API实现OData端点。我从nuget安装了适用于OData 1-3的Microsoft ASP.NET Web API 2.2包,我认为我运行的是OData v3端点 $metadata:C# 如何在ASP.NET中创建OData v2端点?,c#,asp.net,rest,asp.net-web-api,odata,C#,Asp.net,Rest,Asp.net Web Api,Odata,我正在尝试使用ASP.NET Web API实现OData端点。我从nuget安装了适用于OData 1-3的Microsoft ASP.NET Web API 2.2包,我认为我运行的是OData v3端点 $metadata: <edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:DataServiceVersion="3.0" m:MaxDataSer
<edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:DataServiceVersion="3.0" m:MaxDataServiceVersion="3.0">
WebApiConfig.cs:
using System.Web.Http;
using System.Web.Http.OData.Builder;
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<MyModel>("MyModels");
config.Routes.MapODataRoute("odata", "odata", builder.GetEdmModel());
}
}
使用System.Web.Http;
使用System.Web.Http.OData.Builder;
公共静态类WebApiConfig
{
公共静态无效寄存器(HttpConfiguration配置)
{
ODataConventionModelBuilder=新ODataConventionModelBuilder();
builder.EntitySet(“MyModels”);
config.Routes.MapODataRoute(“odata”,“odata”,builder.GetEdmModel());
}
}
我刚刚发现我的预期客户端应用程序只能支持ODataV2。有没有办法将Web API配置为在OData v2而不是OData v3中说话或在OData v3之外说话?在model builder上设置服务的版本和最大版本:
var odataVersion2 = new Version(2, 0);
var builder = new ODataConventionModelBuilder();
builder.DataServiceVersion = odataVersion2;
builder.MaxDataServiceVersion = odataVersion2;
您需要设置DataService(OData版本)、Edm(CSDL版本)和Edmx的版本:
var version = Microsoft.Data.Edm.Csdl.CsdlConstants.EdmxVersion2;
var builder = new ODataConventionModelBuilder
{
// OData V2.0
DataServiceVersion = version,
MaxDataServiceVersion = version
};
// Generate Model
var edmModel = builder.GetEdmModel();
// CSDL Version 2.0
edmModel.SetEdmVersion(version);
// Set Edmx Version
edmModel.SetEdmxVersion(version);