对于使用Fluent API的所有EF上下文类,请使用Table-Per-Type

时间:2013-11-17 08:11:51

标签: c# entity-framework inheritance fluent-interface

目前,如果我想使用Fluent API来规定每个类型的表继承策略,我必须执行以下操作:

modelBuilder.Entity<User>().ToTable("User");
modelBuilder.Entity<ContentItem>().ToTable("ContentItem");
modelBuilder.Entity<MarketItem>().ToTable("MarketItem");

如果我以某种方式忘记为新的继承实体添加命令,它将破坏我的架构。

我想用伪代码做的是:

foreach (ModelType T in AllModelTypes)
{
    modelBuilder.Entity<T>().Table(T.ToString());
}

EF Fluent API内置了什么内容可以实现这一目标吗?

如果没有,有没有办法可以实现如上所述的foreach循环(迭代类型?)

1 个答案:

答案 0 :(得分:2)

使用Entity Framework 6,这应该做你想要的:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);    
        modelBuilder.Types().Configure(t =>t.ToTable(t.ClrType.Name));
    }

更新

以下是Custom Code First Conventions

上msdn文章的链接