实体框架可选的一对一关系不起作用



我有很多实体。其中一个OrderLine实体使用一些关系。它与AccountTransaction的关系。当我从上下文中获得AccountTransaction类时,我可以通过懒负载获得OrderLine记录。但是,当我从上下文中获得OrderLine类时,AccountTransaction导航属性为null。我怎么解决这个问题?

public partial class OrderLine : Base
{
    [Key, ForeignKey("AccountTransaction")]
    public int OrderLineId { get; set; }
    public virtual AccountTransaction AccountTransaction { get; set; }
}
public class AccountTransaction
{
    [Key]
    public int TransactionId { get; set; }
    [ForeignKey("OrderLine")]
    public int? OrderLineId { get; set; }
    public virtual OrderLine OrderLine { get; set; }        
}

var orderLine = context.OrderLines.Find(167069);
var accTransaction = context.AccountTransactions.Find(38770);

//orderLine.AccountTransaction; //here account transaction is null
//accTransaction.OrderLine;//here orderLine is not null.

您正在滥用[ForeignKey]。它用于指定从子记录中的关系的密钥字段,在这种情况下,这将是AccountTransaction。尝试将模型更改为以下:

public partial class OrderLine : Base
{
    [Key]
    public int OrderLineId { get; set; }
    public virtual AccountTransaction AccountTransaction { get; set; }
}
public class AccountTransaction
{
    [Key]
    public int TransactionId { get; set; }
    [Index(IsUnique=true)]
    public int? OrderLineId { get; set; }
    [ForeignKey("OrderLineId")]
    public virtual OrderLine OrderLine { get; set; }        
}

让我知道它是否有效,还是遇到其他问题。:)