我们使用新的Entity Framework 7使用ASP.NET 5的RC1版本,我希望在数据库中使用表名称作为模型名称空间的前缀住。
我知道如何在之前版本的Entity Framework中执行此操作(感谢this SO question),但我无法弄清楚如何在新版本中执行相同操作。我浏览了文档,用Google搜索并在源代码中戳了戳头,但没有用。
我在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做同样的事情?这可能是其中之一吗?
答案 0 :(得分:4)
通过直接操作模型在OnModelCreating
结尾处执行:
foreach (var entity in modelBuilder.Model.GetEntityTypes())
{
entity.Relational().TableName =
$"{entity.ClrType.Namespace?.Replace('.', '-')}_{entity.ClrType.Name}s";
}
答案 1 :(得分:3)
截至今天,Dic,2015年9月,EF7自定义约定问题仍未解决:
https://github.com/aspnet/EntityFramework/issues/214
如果您访问该链接,可以深入了解更多详情。