使用反射的实体框架模型生成器配置
本文关键字:模型生成器 配置 框架 实体 反射的 | 更新日期: 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 });