我使用实体框架在我的ObjectContext
类中映射数据库中的类:
var typesToRegister = Assembly.GetExecutingAssembly().GetTypes()
.Where(type => !String.IsNullOrEmpty(type.Namespace))
.Where(type => type.BaseType != null && type.BaseType.IsGenericType && type.BaseType.GetGenericTypeDefinition() == typeof(EntityTypeConfiguration<>));
foreach (var type in typesToRegister)
{
dynamic configurationInstance = Activator.CreateInstance(type);
modelBuilder.Configurations.Add(configurationInstance);
}
//Replace with ....
//modelBuilder.Configurations.Add(new EntityMap());
上面的代码获取所有类typeof(EntityTypeConfiguration<>)
。如果我的"EntityMap"类与我的对象上下文位于同一类库中,那没关系,但是如果我map classes
我在单独的类库中编写,则不起作用。 Map classes
无法在ObjectContext
上识别。
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (var assembly in assemblies)
{
assembly.GetTypes().Where(type => !String.IsNullOrEmpty(type.Namespace))
.Where(type => type.BaseType != null && type.BaseType.IsGenericType && type.BaseType.GetGenericTypeDefinition() == typeof(EntityTypeConfiguration<>));
foreach (var type in typesToRegister)
{
dynamic configurationInstance = Activator.CreateInstance(type);
modelBuilder.Configurations.Add(configurationInstance);
}
}
这应该会让您获得所有加载的程序集,而不仅仅是当前程序集。
我建议将其更改为:
var typesToRegister = typeof(MapClass).Assembly.GetTypes()
.....
其中MapClass
是从另一个程序集中的EntityTypeConfiguration<T>
继承的类之一。