【问题标题】:EF Core how to map table names to Entity names, not DbSet names?EF Core 如何将表名称映射到实体名称,而不是 DbSet 名称?
【发布时间】:2021-04-17 13:23:58
【问题描述】:

我看到 EF Core 中的 CodeFirst 从 DbContext 的 DbSet 名称生成表名称。

如果我有DbSet<Person> People {get; set;},我将获得People 作为Person 的表名,但是我希望它是Person

我试过this solution,但似乎不适用于Core...

后来我尝试了

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
                
    foreach (var entity in modelBuilder.Model.GetEntityTypes())
    {
        modelBuilder.Entity(entity.Name)
            .ToTable(entity.Name);
    }
}

这样更好,但它给了我带有命名空间的类的全名,有没有办法从中删除命名空间?

【问题讨论】:

    标签: .net entity-framework entity-framework-core asp.net-core-5.0 ef-core-5.0


    【解决方案1】:

    使用DisplayName() 而不是Name

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
                    
        foreach (var entity in modelBuilder.Model.GetEntityTypes())
        {
            modelBuilder.Entity(entity.Name)
                .ToTable(entity.DisplayName());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 2011-01-02
      相关资源
      最近更新 更多