1

我使用实体框架来映射数据库中的类,在我的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

4

2 回答 2

0

我建议将其更改为:

var typesToRegister = typeof(MapClass).Assembly.GetTypes()
                      .....

继承自另一个程序集中的MapClass类之一在哪里。EntityTypeConfiguration<T>

于 2014-03-01T19:25:05.053 回答
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);
    }
}

这应该让您获得所有已加载的程序集,而不仅仅是当前的程序集。

于 2014-03-01T19:30:46.197 回答