2
我有很多實體。其中一個OrderLine
實體使用了幾個關係。這與AccountTransaction
有關係。當我從上下文中得到AccountTransaction
類時,我可以通過延遲加載獲得OrderLine
記錄。但是,當我從AccountTransaction
導航屬性爲空時得到OrderLine
類。 我該如何解決這個問題?實體框架可選一對一關係不起作用
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.
我試過了,但我提出這個例外。 AccountTransaction_OrderLine_Source::多重性在關係「AccountTransaction_OrderLine」中的角色「AccountTransaction_OrderLine_Source」中無效。因爲依賴角色屬性不是關鍵屬性,所以依賴角色的多重性的上界必須是'*' – Yargicx
正確,因爲此結構不遵循正常的1:1模式,而是1:多。嘗試添加'[Index(IsUnique = true)]'到'AccountTransaction.OrderLineId'來查看是否可以修復它。我也會編輯我的答案。 – CptRobby
我幾乎可以肯定,1:1關係需要直接通過兩個實體的關鍵而沒有附加屬性。嘗試將[Key]屬性移動到OrderLineId並將類型更改爲int(因爲此值不能爲空) – Miguel