C# OData v4 EDM模型-单独的配置类?

C# OData v4 EDM模型-单独的配置类?,c#,asp.net,entity-framework,asp.net-web-api,odata,C#,Asp.net,Entity Framework,Asp.net Web Api,Odata,我想将OData4与WebApi2和EF一起使用,对于后者,我得到了大约30个模型配置类。现在,由于OData需要EDM模型,我想以某种方式重用现有的模型配置——或者至少将配置类放入不同的库中,以保持web api配置的可管理性 我尝试使用EntitySetConfiguration创建EDM实体类型配置类。您可以通过反射使用DBContext构建EDM模型 public static void Register(HttpConfiguration config) { var model

我想将OData4与WebApi2和EF一起使用,对于后者,我得到了大约30个模型配置类。现在,由于OData需要EDM模型,我想以某种方式重用现有的模型配置——或者至少将配置类放入不同的库中,以保持web api配置的可管理性


我尝试使用
EntitySetConfiguration创建EDM实体类型配置类。您可以通过反射使用DBContext构建EDM模型

public static void Register(HttpConfiguration config)
{
    var modelBuilder = new ODataConventionModelBuilder();
    modelBuilder.ContainerName = "EntityContainer";

    using(var ctx = new MyDBContext()) 
    {
        var dbSets = ctx.GetType().GetProperties();
        foreach(var set in dbSets)
        {
            if(set.PropertyType.IsGenericType)
            {
                 method = entitySet.MakeGenericMethod(set.PropertyType.GenericTypeArguments[0]);
                 bool containsEntity = false;
                 foreach (var entity in modelBuilder.EntitySets)
                 {
                     if (entity.GetType().Equals(set.PropertyType.GenericTypeArguments[0]))
                         containsEntity = true;


                     if (!containsEntity)
                         method.Invoke(modelBuilder, new[] { set.Name });
                  } 
             }
         }
     }
     _config.MapODataServiceRoute(
           routeName: "entities",
           routePrefix: API_ENTITIES_BASE_URI,
           model: modelBuilder.GetEdmModel()
           );
}

希望有帮助。

entitySet的类型是什么?