我有一个OData v4 Endpoint Using ASP.NET Web API
,它有两个独立的模型
ModelVer1.Customer.cs
int ID;
string Name;
ModelVer2.Customer.cs
int ID;
string Name;
string Address;
webapiconfig.cs
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<ModelVer1.Customer>("Customers");
// If I use below get error:
// The entity set 'Customers' was already configured with a different EntityType ('Customer'). Parameter name: entityType
builder.EntitySet<ModelVer2.Customer>("Customers");
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "demo/api",
model: builder.GetEdmModel());
config.Services.Replace(typeof(IHttpControllerSelector), new CustomControllerSelector(config));
}
但是得到错误:
实体集&#39;客户&#39;已经配置了不同的 实体类型(&#39;客户&#39;)。 参数名称:entityType
应该做什么?
我想我需要做
model: builder.GetEdmModel()
之类的事情 需要动态生成此模型,获取所有实体模型 类似ModelVersion1.Customer和ModelVersion2.Customer
答案 0 :(得分:3)
您必须使用其他别名/名称。
而不是
builder.EntitySet<ModelVer1.Customer>("Customers");
builder.EntitySet<ModelVer2.Customer>("Customers");
使用
builder.EntitySet<ModelVer1.Customer>("Customers");
builder.EntitySet<ModelVer2.Customer>("CustomersV2");