我正在将应用程序迁移到EF Core,但模型定义遇到问题。
假设这个简单的场景:
public class AEntity
{
public ICollection<BEntity> Bs { get; set; }
}
public class BEntity
{
public int AId { get; set; }
}
我使用约定类名 + Entity来区分适当的完整类和数据库模型。但是我显然不想在数据库中使用相同的命名,我只想拥有A
,B
,..
我可以简单地使用OnModelCreating
在.Relational().TableName = getRidOfEntity(...)
中覆盖此命名约定。
但是现在,如果我要列出类型为AEntity
的对象,则会出现此错误:
“无效的列名'AEntityId'。
很明显,EF核心使用原始的类名创建外键,并且不在覆盖的模型中查找。
如何在模型中重命名外键列名称?我不想使用注释或通过流畅的API指定类型/ FK的列表。该模型严格遵循一些约定,因此没有歧义,可以通过这种方式设置所有内容。