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]))
);
我需要使用特定类型的实体创建数据库上下文,因为我在解决方案上有多个数据库上下文。我的问题是 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]))
);