簡體   English   中英

OData v4 EDM模型-單獨的配置類?

[英]OData v4 EDM model - separate configuration classes?

我想將OData 4與WebApi2和EF一起使用,至於后者,我獲得了大約30個模型配置類。 現在,由於OData需要EDM模型,因此我想以某種方式重用我現有的模型配置-或至少將配置類放入其他庫中,以使Web api配置易於管理。

我嘗試使用EntitySetConfiguration<'1>創建EDM實體類型配置類,但是該類的構造函數是內部的。 那么-有沒有辦法在運行時使用DbContext自動構建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()
           );
}

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM