是否可以在 Web API 服务中托管两个不同的 Odata 模型
Is it possible to host two different Odata models in a Web API service
是否可以在单个 Web API 服务中托管两个不同的 OData 模型?
如果是这样,我该如何实现?
例如:
两个模特,
var model1 = new ODataConventionModelBuilder();
builder.EntitySet<Car>("Car");
var model2 = new ODataConventionModelBuilder();
builder.EntitySet<Animal>("Animal");
希望可以通过某种路由实现。
控制器 Car
和 Animal
public class AnimalController:ODataController{
//Implementation stuff
}
public class AnimalController:ODataController{
//Implementation stuff
}
和模型构建器
public class ModelBuilder{
public static IEdmModel GetModal1(){
var model1 = new ODataConventionModelBuilder();
builder.EntitySet<Car>("Car");
return model1.GetEdmModel();
}
public static IEdmModel GetModal2(){
var model2 = new ODataConventionModelBuilder();
builder.EntitySet<Animal>("Animal");
return model2.GetEdmModel();
}
}
Modal1 的路由
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapODataRoute(
routeName: "OData",
routePrefix: null,
model: ModelBuilder.GetModal1());
}
}
所以问题又是如何添加 modal2
您应该为汽车创建一个 ApiController
,为动物创建一个单独的。
你可以这样做:
1-将两个实体集添加到一个Edm
模型中。
public class ModelBuilder
{
public static IEdmModel GetModal()
{
ODataConventionModelBuilder builder= new ODataConventionModelBuilder();
builder.EntitySet<Car>("Car");
builder.EntitySet<Animal>("Animal");
return model.GetEdmModel();
}
}
2- 为不同的 Edm
模型添加两个端点。
public static void Register(HttpConfiguration config)
{
config.Routes.MapODataRoute(
routeName: "OData1",
routePrefix: "odata1",
model: ModelBuilder.GetModal1());
config.Routes.MapODataRoute(
routeName: "OData2",
routePrefix: "odata2",
model: ModelBuilder.GetModal2());
}
谢谢。
是否可以在单个 Web API 服务中托管两个不同的 OData 模型? 如果是这样,我该如何实现?
例如: 两个模特,
var model1 = new ODataConventionModelBuilder();
builder.EntitySet<Car>("Car");
var model2 = new ODataConventionModelBuilder();
builder.EntitySet<Animal>("Animal");
希望可以通过某种路由实现。
控制器 Car
和 Animal
public class AnimalController:ODataController{
//Implementation stuff
}
public class AnimalController:ODataController{
//Implementation stuff
}
和模型构建器
public class ModelBuilder{
public static IEdmModel GetModal1(){
var model1 = new ODataConventionModelBuilder();
builder.EntitySet<Car>("Car");
return model1.GetEdmModel();
}
public static IEdmModel GetModal2(){
var model2 = new ODataConventionModelBuilder();
builder.EntitySet<Animal>("Animal");
return model2.GetEdmModel();
}
}
Modal1 的路由
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapODataRoute(
routeName: "OData",
routePrefix: null,
model: ModelBuilder.GetModal1());
}
}
所以问题又是如何添加 modal2
您应该为汽车创建一个 ApiController
,为动物创建一个单独的。
你可以这样做:
1-将两个实体集添加到一个Edm
模型中。
public class ModelBuilder
{
public static IEdmModel GetModal()
{
ODataConventionModelBuilder builder= new ODataConventionModelBuilder();
builder.EntitySet<Car>("Car");
builder.EntitySet<Animal>("Animal");
return model.GetEdmModel();
}
}
2- 为不同的 Edm
模型添加两个端点。
public static void Register(HttpConfiguration config)
{
config.Routes.MapODataRoute(
routeName: "OData1",
routePrefix: "odata1",
model: ModelBuilder.GetModal1());
config.Routes.MapODataRoute(
routeName: "OData2",
routePrefix: "odata2",
model: ModelBuilder.GetModal2());
}
谢谢。