由于我在解决方案上有多个Db上下文,因此我需要使用特定类型的实体创建数据库上下文。我的问题是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
实体具有基类BaseEntity
public class DaysOfWeek : BaseEntity
{
public string Name { get; set; }
}
我们如何使用基本模型为IEntityTypeConfiguration
的实体过滤BaseEntity
?
谢谢
答案 0 :(得分:1)
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]))
);