作者:手机用户2602916917 | 来源:互联网 | 2022-12-07 18:05
在中EntityFramework 6.x
,如果我们有很多EntityConfiguration
类,则可以OnModelCreating(ModelBuilder modelBuilder)
按以下方式分配所有类,而不是一个接一个地分配:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.AddFromAssembly(typeof(MyDbContext).Assembly);
}
是否有任何类似 modelBuilder.Configurations.AddFromAssembly
的 实体框架核心。
谢谢。
1> TanvirArjel..:
对于EF Core <= 2.1
您编写扩展方法如下:
public static class ModelBuilderExtensions
{
public static void ApplyAllConfigurations(this ModelBuilder modelBuilder)
{
var typesToRegister = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.GetInterfaces()
.Any(gi => gi.IsGenericType && gi.GetGenericTypeDefinition() == typeof(IEntityTypeConfiguration<>))).ToList();
foreach (var type in typesToRegister)
{
dynamic cOnfigurationInstance= Activator.CreateInstance(type);
modelBuilder.ApplyConfiguration(configurationInstance);
}
}
}
然后在OnModelCreating
如下:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ApplyAllConfigurations();
}
对于EF Core> = 2.2
从EF Core 2.2开始,您无需编写任何自定义扩展方法。EF Core 2.2 ApplyConfigurationsFromAssembly
为此添加了扩展方法。您可以按以下方式使用它:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ApplyConfigurationsFromAssembly(typeof(UserConfiguration).Assembly); // Here UseConfiguration is any IEntityTypeConfiguration
}
谢谢。