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
我正在尝试使用 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