使用Reflection的实体框架模型构建器配置

时间:2016-01-21 08:19:41

标签: c# reflection entity-framework-6

我想使用反射调用以下代码:

modelBuilder.Entity<CardPayment>().Map(m =>
            {
                m.MapInheritedProperties();
                m.ToTable("CardPayments");
            });

我正在尝试以下方法:

var entityMethod = typeof(DbModelBuilder).GetMethod("Entity");
entityMethod.MakeGenericMethod(type)
          .Invoke(modelBuilder, new object[] { });

如何拨打&#34; 地图&#34;方法提供&#34; Map&#34;方法。 如何调用&#34; MapInheritedProperties &#34;和&#34; ToTable &#34; &#34; Map&#34;中的方法方法

由于

1 个答案:

答案 0 :(得分:0)

您需要从entityMethod.MakeGenericMethod(type).Invoke(modelBuilder, new object[] { });捕获返回对象,然后您可以动态调用Map

var mapLambda = 
      /* you'll need to fix the typing here */(m) => 
      { 
           m.MapInheritedProperties();
           m.ToTable("CardPayments");
      };

var entityMethod = typeof(DbModelBuilder).GetMethod("Entity");
var entityResult = 
     entityMethod.MakeGenericMethod(type)
          .Invoke(modelBuilder, new object[] { });

//invoke Map
entityResult.GetType().GetMethod("Map").Invoke(entityResult, new object[]{ mapLambda });