Ich habe viele Entitäten. Einer von ihnen Entity verwenden ein paar Beziehungen. Es ist eine Beziehung zu . Wenn ich Klasse aus dem Zusammenhang bekomme, kann ich Rekord mit Lazy Load bekommen. Aber wenn ich OrderLine
Klasse aus Kontext AccountTransaction
Navigationseigenschaft ist null. Wie kann ich dieses Problem lösen?Entity Framework Optionale Eins-zu-Eins-Beziehung funktioniert nicht
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.
Ich habe versucht, aber ich erhebe diese Ausnahme. AccountTransaction_OrderLine_Source:: Die Multiplizität ist in der Rolle 'AccountTransaction_OrderLine_Source' in der Beziehung 'AccountTransaction_OrderLine' nicht gültig. Da die abhängigen Rolleneigenschaften nicht die Schlüsseleigenschaften sind, muss die obere Grenze der Multiplizität der abhängigen Rolle '*' sein. – Yargicx
Richtig, weil diese Struktur nicht einem normalen 1: 1-Muster folgt, sondern einer 1: vielen. Versuchen Sie, '[Index (IsUnique = true)]' zu 'AccountTransaction.OrderLineId' hinzuzufügen, um zu sehen, ob das Problem dadurch behoben wird. Ich werde meine Antwort auch bearbeiten. – CptRobby
Ich bin mir fast sicher, dass die 1: 1-Beziehung direkt durch den Schlüssel beider Entitäten erfolgen muss, nicht mit einer zusätzlichen Eigenschaft. Versuchen Sie, das [Key] -Attribut auf OrderLineId zu verschieben und den Typ in int zu ändern (da dieser Wert nicht Nullable sein kann) – Miguel