ApplyConfigurationsFromAssembly With Filter Entityframework 核心

ApplyConfigurationsFromAssembly With Filter Entityframework Core

我需要使用特定类型的实体创建数据库上下文,因为我在解决方案上有多个数据库上下文。我的问题是 OnModelCreating 我们从程序集应用配置 builder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly()) 所以我只想应用配置 IEntityTypeConfiguration 实体类型具有基本模型 BaseEntity 如下所示

public class DaysOfWeekBuilder : IEntityTypeConfiguration<DaysOfWeek>
{
    public void Configure(EntityTypeBuilder<DaysOfWeek> builder)
    {
        builder.ToTable("DaysOfWeek");
        builder.Property(e => e.Name).HasMaxLength(15);
    }
}

所以DaysOfWeek实体有基础classBaseEntity

public class DaysOfWeek : BaseEntity
{
    public string Name { get; set; }
}

我们如何过滤 IEntityTypeConfiguration 具有基本模型 BaseEntity 的实体?

谢谢

documentation 说你可以添加一个过滤谓词作为第二个参数。

在这种情况下,谓词将扫描类型,对于每种类型,将检查它是否实现了 IEntityTypeConfiguration<T> 接口以及 T 是否继承了 BaseEntity.

builder.ApplyConfigurationsFromAssembly(
    Assembly.GetExecutingAssembly(), 
    t => t.GetInterfaces().Any(i => 
                i.IsGenericType &&
                i.GetGenericTypeDefinition() == typeof(IEntityTypeConfiguration<>) &&
                typeof(BaseEntity).IsAssignableFrom(i.GenericTypeArguments[0]))
);