我使用实体框架在我的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
。
答案 0 :(得分:0)
我建议将其更改为:
var typesToRegister = typeof(MapClass).Assembly.GetTypes()
.....
其中MapClass
是继承自另一个程序集中EntityTypeConfiguration<T>
的类之一。
答案 1 :(得分:0)
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);
}
}
这应该可以获得所有已加载的程序集,而不仅仅是当前程序集。