我有很多实体。其中的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; }
}


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

关于c# - Entity Framework 可选的一对一关系不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46077268/

10-10 06:16