0

IEntityTypeConfiguration<>から派生したすべてのクラスを実行時にDbContextに適用する方法を知っているか実装がありますか?EFコア2.0を使用してすべてのIEntityTypeConfiguration派生クラスを適用する

あり内蔵のものであるように見えるとして手動で各1をロードしません:

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    modelBuilder.ApplyConfiguration(new Table1Config()) 
    modelBuilder.ApplyConfiguration(new Table2Config()) 
    ... 
    modelBuilder.ApplyConfiguration(new TableNConfig()) 
} 

は、多くのテーブルを持つデータベースにはむしろ退屈なことを証明しようとしています。

答えて

0
protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    var implementedConfigTypes = Assembly.GetExecutingAssembly() 
     .GetTypes() 
     .Where(t => !t.IsAbstract 
      && !t.IsGenericTypeDefinition 
      && t.GetTypeInfo().ImplementedInterfaces.Any(i => 
       i.GetTypeInfo().IsGenericType && i.GetGenericTypeDefinition() == typeof(IEntityTypeConfiguration<>))); 

    foreach (var configType in implementedConfigTypes) 
    { 
     dynamic config = Activator.CreateInstance(configType); 
     modelBuilder.ApplyConfiguration(config); 
    } 
} 
関連する問題