我的数据库表“ 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;
这仍然行不通,我得到了这个异常:
无法将属性或导航“作者”添加到实体类型“书”,因为实体类型“书”上已经存在具有相同名称的属性或导航。
答案 0 :(得分:1)
不要将带有“作者”实体名称的ForeignKey属性放在实体上方,而是将其放在ID上方,就像这样:
public Author Author { get; set; }
[ForeignKey("Author")]
public long? AuthorId { get; set; } = null;
您正在告诉EF FK AuthorId
与[ForeignKey("Author")]
属性中命名的实体一起使用。如果指定这种方式,则不需要column属性。