Конечно, это возможно.В конце концов, вы вообще не обязаны использовать 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);