我有一个层次结构,我想在一个类中对其进行配置。有可能吗?
目前,我有N
接口的IEntityTypeConfiguration<>
实现-层次结构中的每个实体一个。
答案 0 :(得分:4)
当然可以。毕竟,您完全不必使用IEntityTypeConfiguration<>
-您可以在OnModelCreating
内配置 all 您的实体。同样,所有ApplyConfiguration
通用方法所做的就是调用实现Configure
接口的类的IEntityTypeConfiguration<TEntity>
方法,该接口传递通常从EntityTypeBuilder<TEntity>
调用中获得的modelBuilder.Entity<TEntity>()
实例(或接收该方法第二次重载的Action<>
作为参数。
因此,您可以将代码放入接收ModelBuilder
实例的任何静态或实例类方法中。如果要使用类,则不应实现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);