是否可以在单独的 class 中移动层次结构的流畅配置?
Is it possible to move fluent configuration of a hierarchy in a separate class?
我有一个层次结构,我想在一个层次结构中配置它 class。可能吗?
目前我有 N
个 IEntityTypeConfiguration<>
接口的实现 - 层次结构中每个实体一个。
当然有可能。毕竟,您根本不会被迫使用 IEntityTypeConfiguration<>
- 您可以在 OnModelCreating
中配置 所有 您的实体。此外,ApplyConfiguration
泛型方法所做的就是调用 class 的 Configure
方法实现 IEntityTypeConfiguration<TEntity>
接口传递 EntityTypeBuilder<TEntity>
实例,您通常从 modelBuilder.Entity<TEntity>()
调用(或作为该方法第二次重载的 Action<>
的参数接收)。
因此,您可以将代码放在接收 ModelBuilder
实例的任何静态或实例 class 方法中。如果你想使用 class,它不应该实现 IEntityTypeConfiguration<>
因为没有办法从 ``EntityTypeBuilder` 得到 ModelBuilder
,你需要它才能配置基础实体和派生实体。
例如,像这样:
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);
我有一个层次结构,我想在一个层次结构中配置它 class。可能吗?
目前我有 N
个 IEntityTypeConfiguration<>
接口的实现 - 层次结构中每个实体一个。
当然有可能。毕竟,您根本不会被迫使用 IEntityTypeConfiguration<>
- 您可以在 OnModelCreating
中配置 所有 您的实体。此外,ApplyConfiguration
泛型方法所做的就是调用 class 的 Configure
方法实现 IEntityTypeConfiguration<TEntity>
接口传递 EntityTypeBuilder<TEntity>
实例,您通常从 modelBuilder.Entity<TEntity>()
调用(或作为该方法第二次重载的 Action<>
的参数接收)。
因此,您可以将代码放在接收 ModelBuilder
实例的任何静态或实例 class 方法中。如果你想使用 class,它不应该实现 IEntityTypeConfiguration<>
因为没有办法从 ``EntityTypeBuilder` 得到 ModelBuilder
,你需要它才能配置基础实体和派生实体。
例如,像这样:
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);