如何在 ODataModelBuilder 中定义多个模型 类

how do I define multiple model classes inside ODataModelBuilder

我有一个 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));


        }

但是出现错误:

The entity set 'Customers' was already configured with a different EntityType ('Customer'). Parameter name: entityType

应该怎么办?

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

您必须使用不同的别名/名称。

而不是

builder.EntitySet<ModelVer1.Customer>("Customers");
builder.EntitySet<ModelVer2.Customer>("Customers");

使用

builder.EntitySet<ModelVer1.Customer>("Customers");
builder.EntitySet<ModelVer2.Customer>("CustomersV2");