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