EF核心 - 实体映射配置

问题描述 投票:0回答:1

在以前的EF版本中,您可以在DbContext上配置所有实体映射,如下所示: -

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                modelBuilder.Configurations.AddFromAssembly(typeof(MyDbContext).Assembly);

                base.OnModelCreating(modelBuilder);
            }

但是在最新的EF Core中,您似乎必须单独添加每个映射,如下所示: -

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.ApplyConfiguration(new UserMap());
            modelBuilder.ApplyConfiguration(new AddressMap());

            base.OnModelCreating(modelBuilder);
        }

是否有类似的方式添加实体地图,因为这是乏味的。

c# entity-framework entity-framework-core
1个回答
0
投票

这与EF6的AddFromAssembly相同:

var configurations = typeof(MyDbContext).Assembly.GetTypes()
                .Where(t => t.BaseType != null && t.BaseType.IsGenericType && t.BaseType.GetGenericTypeDefinition() == typeof(System.Data.Entity.ModelConfiguration.EntityTypeConfiguration<>));

foreach (var config in configurations)
{
    dynamic instance = System.Activator.CreateInstance(config);
    modelBuilder.Configurations.Add(instance);
}
© www.soinside.com 2019 - 2024. All rights reserved.