使用实体框架我可以在MyContext中覆盖OnModelCreating方法并执行以下操作:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//...
modelBuilder.Entity<MyEntity>()
.Property(x => x.Foo.Value)
.HasColumnName("Foo");
modelBuilder.Entity<OtherEntity>()
.Property(x => x.Bar.Value)
.HasColumnName("Bar");
}
其中Foo和Bar是ISomeInterface的属性,用于定义属性Value。
但是,我不想为MyContext中的每个EntityType指定此映射。我想以更通用的方式定义模式(使用reflextion)。像
这样的东西var types = Assembly.GetCallingAssembly().GetTypes();
foreach(var type in types){
var props = type.GetProperties().Where(p => p.PropertyType is ISomeInterface);
foreach (var prop in props){
var valueProp = prop.PropertyType.GetProperty("Value");
modelbuilder.GetEntity(type)
.Property(valueProp)
.HasColumnName(prop.Name)
}
}
可以这样做吗?