带有实体框架7(rc1)的全局表前缀

本文关键字:全局 前缀 rc1 实体 框架 | 更新日期: 2023-09-27 18:26:12

我们使用的是带有新实体框架7的ASP.NET 5的RC1版本,我希望在数据库中的表名前面加上模型所在命名空间的名称。

我知道如何在实体框架的前一个版本中做到这一点(多亏了这个SO问题),但我不知道如何在新版本中做到同样的事情。我浏览了文档,在谷歌上搜索了一下,然后在源代码中探了探脑袋,但都无济于事。

我在EF6:中做什么

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Types().Configure(entity => entity.ToTable($"{entity.ClrType.Namespace?.Replace('.', '-')}_{entity.ClrType.Name}s"));
    base.OnModelCreating(modelBuilder);
}

如何对EF7进行同样的操作?这可能是还没有出现的东西之一吗?

带有实体框架7(rc1)的全局表前缀

OnModelCreating结束时通过直接操作模型来完成:

foreach (var entity in modelBuilder.Model.GetEntityTypes())
{
    entity.Relational().TableName =
        $"{entity.ClrType.Namespace?.Replace('.', '-')}_{entity.ClrType.Name}s";
}

截至今天,Dic,2015年9月9日,EF7自定义约定问题仍然悬而未决:

https://github.com/aspnet/EntityFramework/issues/214

如果您访问该链接,您可以深入了解更多详细信息。