2017-10-26 3 views
0

내 DB 컨텍스트 초기화는 다음과 같습니다. 모든 것이 잘 작동합니다. 중지 후 Visual Studio 디버그 모드에서 프로젝트를 다시 시작한 후 '엔터티'x '형식이 현재 컨텍스트에 대한 모델의 일부가 아닙니다'같은 작업에 대해 발생합니다. 디버그 모드에서이 'x'entityType 호출됩니다 참조하십시오.엔터티 형식이 현재 컨텍스트 이상한 오류에 대한 모델의 일부가 아닙니다

하지만 엔티티 프로젝트를 다시 빌드하면 다음 디버그가 다시 시작될 때까지 모든 것이 잘 작동합니다.

아이디어가 있으십니까? 당신이 엔티티 어셈블리를로드 할 경우

public class FsDbContext : DataContext<DbContext>, ITransientDataContext 
{ 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     //MappingAssemblies.All.ForEach(assembly => modelBuilder.Configurations.AddFromAssembly(assembly)); 

     var addMethod = typeof(ConfigurationRegistrar).GetMethods().Single(m => m.Name == "Add" 
      && m.GetGenericArguments().Any(a => a.Name == "TEntityType")); 

     MappingAssemblies.All.ForEach(assembly => 
     { 
      var configTypes = assembly.GetTypes().Where(t => t.BaseType != null 
       && t.BaseType.IsGenericType 
       && t.BaseType.GetGenericTypeDefinition() == typeof(EntityTypeConfiguration<>)); 

      foreach (var type in configTypes) 
      { 
       var entityType = type.BaseType.GetGenericArguments().Single(); 

       var entityConfig = assembly.CreateInstance(type.FullName); 
       addMethod.MakeGenericMethod(entityType) 
        .Invoke(modelBuilder.Configurations, new object[] { entityConfig }); 
      } 
     }); 

    } 
} 

답변

0

동적으로 사용하지 않는

AppDomain.CurrentDomain.GetAssemblies() 

사용

Directory.GetFiles(path, "*.dll") 
관련 문제