I have one OData v4 Endpoint Using ASP.NET Web API
which is having two separate models
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));
}
But getting error :
The entity set 'Customers' was already configured with a different EntityType ('Customer'). Parameter name: entityType
What should be done?
I guess i need to do something like
model: builder.GetEdmModel()
need to generate this model dynamically which gets all entity model classes like ModelVersion1.Customer and ModelVersion2.Customer
You have to use a different alias / name.
Instead of
builder.EntitySet<ModelVer1.Customer>("Customers");
builder.EntitySet<ModelVer2.Customer>("Customers");
Use
builder.EntitySet<ModelVer1.Customer>("Customers");
builder.EntitySet<ModelVer2.Customer>("CustomersV2");