我正在使用端点路由(已经支持)和版本控制来创建ASP.NET Core 3.1 OData项目。
在注册OData路由时,我没有一个模型,而是两个模型,它们是从VersionedODataModelBuilder
中获得的,每个API版本一个(现在有两个)。
我正在这样注册端点:
endpoints.MapODataRoute("odata", "odata/v{version:apiversion}", models.First());
问题是,我需要针对每个模型执行此操作,否则,端点将仅了解其中一个。这是可行的,但是,正如我说的那样,端点将始终获得相同的模型,这可能不合适(例如,每个版本的属性不同或功能不同)。
一种可能的选择是为每个版本都有一个端点:
endpoints.MapODataRoute("odata", "odata/v1.0", models.ElementAt(0));
endpoints.MapODataRoute("odata", "odata/v2.0", models.ElementAt(1));
在这种情况下,端点不了解版本,也就是说,它不遵守操作方法上的[ApiVersion]
属性。
在较早的版本中,有一个MapVersionedODataRoute
收集了一系列模型,但是现在不见了。