你可以声明2个具有相同名称的OData资源EntitySets吗?

问题描述:

我该如何声明两个具有相同名称的OData实体集,但路由在不同的区域下?这可能吗?你可以声明2个具有相同名称的OData资源EntitySets吗?

例如:

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()); 
} 

来处理像不同的请求:

GET http://localhost/MyApp/Costco/Foods

GET http://localhost/MyApp/Ikea/Foods

+1

你可以使用2个不同的建设者? ikeaBuilder和costcoBuilder? – thorkia

你不能有2个具有相同名称在目前存在的实体相同的EDM模型。你必须创建两个不同的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());