2

我有一个层次结构,我想在一个类中配置它。可能吗?

目前我有接口N的实现IEntityTypeConfiguration<>——层次结构中的每个实体一个。

4

1 回答 1

4

当然有可能。毕竟,您根本不需要使用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);
于 2018-12-06T19:27:37.980 回答