是否可以声明 2 个具有相同名称的 OData 资源实体集

本文关键字:OData 资源 实体 声明 是否 | 更新日期: 2023-09-27 18:37:14

如何声明两个名称相同但路由到不同区域的 OData 实体集?这可能吗?

例如:

public static void Register(HttpConfiguration config)
{
   var builder = new ODataConventionModelBuilder();
   builder.EntitySet<Costco.Models.Food>("Foods");
   builder.EntitySet<Ikea.Models.Food>("Foods"); // this causes an exception
   config.Routes.MapODataServiceRoute("MyRoute", "{area}", builder.GetEdmModel());
}

处理不同的请求,例如:

获取 http://localhost/MyApp/Costco/Foods

获取 http://localhost/MyApp/Ikea/Foods

是否可以声明 2 个具有相同名称的 OData 资源实体集

在同一 EDM 模型中不能有 2 个同名的不同网络实体。您必须创建两种不同的 EDM 模型和路由,如下所示 -

var costcoBuilder = new ODataConventionModelBuilder();
costcoBuilder.EntitySet<Costco.Models.Food>("Foods");
var ikeaBuilder = new ODataConventionModelBuilder();
ikeaBuilder.EntitySet<Ikea.Models.Food>("Foods");
config.Routes.MapODataServiceRoute("CostcoRoute", "Costco", costcoBuilder.GetEdmModel());
config.Routes.MapODataServiceRoute("IkeaRoute", "Ikea", ikeaBuilder.GetEdmModel());