EF Core:覆盖命名约定

时间:2019-02-08 10:32:35

标签: c# orm .net-core entity-framework-core

我正在将应用程序迁移到EF Core,但模型定义遇到问题。

假设这个简单的场景:

public class AEntity
{
    public ICollection<BEntity> Bs { get; set; }
}

public class BEntity
{
   public int AId { get; set; }      
}

我使用约定类名 + Entity来区分适当的完整类和数据库模型。但是我显然不想在数据库中使用相同的命名,我只想拥有AB,..

这样的表名。

我可以简单地使用OnModelCreating.Relational().TableName = getRidOfEntity(...)中覆盖此命名约定。

但是现在,如果我要列出类型为AEntity的对象,则会出现此错误:

  

“无效的列名'AEntityId'。

很明显,EF核心使用原始的类名创建外键,并且不在覆盖的模型中查找。

如何在模型中重命名外键列名称?我不想使用注释或通过流畅的API指定类型/ FK的列表。该模型严格遵循一些约定,因此没有歧义,可以通过这种方式设置所有内容。

0 个答案:

没有答案