使用反射的实体框架模型生成器配置

本文关键字:模型生成器 配置 框架 实体 反射的 | 更新日期: 2023-09-27 18:31:13

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

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

我正在尝试以下方法:

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

如何使用提供"Map"方法的参数调用"Map"方法。如何在"Map"方法中调用"MapInheritedProperties"和"ToTable"方法。

谢谢

使用反射的实体框架模型生成器配置

你需要从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 });