我有一个层次结构,我想在一个类中配置它。可能吗?
目前我有接口N
的实现IEntityTypeConfiguration<>
——层次结构中的每个实体一个。
我有一个层次结构,我想在一个类中配置它。可能吗?
目前我有接口N
的实现IEntityTypeConfiguration<>
——层次结构中的每个实体一个。
当然有可能。毕竟,您根本不需要使用IEntityTypeConfiguration<>
- 您可以在内部配置所有实体OnModelCreating
。此外,所有ApplyConfiguration
泛型方法所做的就是调用Configure
实现接口传递实例的类的方法,该IEntityTypeConfiguration<TEntity>
接口传递EntityTypeBuilder<TEntity>
实例通常是从modelBuilder.Entity<TEntity>()
调用中获得的(或作为该Action<>
方法的第二个重载的参数接收)。
因此,您可以将代码放在接收ModelBuilder
实例的任何静态或实例类方法中。如果你想使用类,它不应该实现IEntityTypeConfiguration<>
,因为没有办法ModelBuilder
从 EntityTypeBuilder 获取,你需要它才能配置基实体和派生实体。
例如,像这样:
class MyHierarchyConfiguration
{
public void Apply(ModelBuilder modelBuilder)
{
modelBuilder.Entity<MyBaseEntity>(builder =>
{
// base entity configuration here
});
modelBuilder.Entity<MyDerivedEntity1>(builder =>
{
// derived entity configuration here
});
modelBuilder.Entity<MyDerivedEntity2>(builder =>
{
// derived entity configuration here
});
// etc.
}
}
和里面OnModelCreating
:
new MyHierarchyConfiguration().Apply(modelBuilder);