EF Core FK不遵循约定无法映射

时间:2019-12-16 15:37:08

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

我的数据库表“ Book”没有遵循EF Core的约定。 FK名称不是AuthorId,而仅是Author。

所以,这不起作用:

public long? AuthorId { get; set; } = null;
public Author Author { get; set; }

因为EF Core不会自动匹配表FK名称。

所以,我试试这个:

[ForeignKey("Author")]
public Author Author { get; set; }
[Column("Author")]
public long? AuthorId { get; set; } = null;

这仍然行不通,我得到了这个异常:

  

无法将属性或导航“作者”添加到实体类型“书”,因为实体类型“书”上已经存在具有相同名称的属性或导航。

1 个答案:

答案 0 :(得分:1)

不要将带有“作者”实体名称的ForeignKey属性放在实体上方,而是将其放在ID上方,就像这样:

public Author Author { get; set; }
[ForeignKey("Author")]
public long? AuthorId { get; set; } = null;

您正在告诉EF FK AuthorId[ForeignKey("Author")]属性中命名的实体一起使用。如果指定这种方式,则不需要column属性。