EF Core 中的一对一关系抛出

One to one relationship in EF Core throws

我正在尝试使用 EF Core 定义一对一关系,其中一方有可为空的外键,但我不断收到以下错误:

'The child/dependent side could not be determined for the one-to-one relationship between 'Product.Transaction' and 'Transaction.Product'. To identify the child/dependent side of the relationship, configure the foreign key property. If these navigations should not be part of the same relationship configure them without specifying the inverse. See http://go.microsoft.com/fwlink/?LinkId=724062 for more details.'

我不明白问题出在哪里,因为我只是像处理一对多关系一样(将 Object 及其 id 放在两侧):

public class Product
{
   [Key]
   public long Id{get;set;}

   [ForeignKey("transactionId")] 
   public Guid? TransactionId{get;set;}
   public Transaction? Transaction{get;set;}
}
public class Transaction
{
   [Key]
   public Guid Id{get;set;}
   [ForeignKey("productId")]
   public long ProductId{get;set;}
   public Product Product{get;set;}
}

P.S 我也检查了这个 article 唯一的区别是我也将 Id 作为一个字段放在关系的双方。 我这样做是因为我想轻松访问外键。

由于您使用的是标准化命名,因此您不需要指定外键。如果您删除 ForeignKey 属性,您的应用程序应该不会 运行 进入此问题。

此 link 应该向您展示 EF 核心的默认设置如何工作,以及如果您使用更复杂的命名,如何指定外键。 https://www.entityframeworktutorial.net/code-first/foreignkey-dataannotations-attribute-in-code-first.aspx