J'ai beaucoup d'entité. L'une d'entre elles utilise quelques relations. C'est par rapport à AccountTransaction
. Quand je reçois la classe AccountTransaction
du contexte, je peux obtenir OrderLine
enregistrer avec la charge paresseuse. Mais quand j'obtiens la classe OrderLine
du contexte AccountTransaction
la propriété de navigation est nulle. Comment puis-je résoudre ce problème?Entity Framework Facultatif Une relation à un ne fonctionne pas
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.
J'ai essayé mais je soulève cette exception. AccountTransaction_OrderLine_Source:: La multiplicité n'est pas valide dans le rôle 'AccountTransaction_OrderLine_Source' dans la relation 'AccountTransaction_OrderLine'. Parce que les propriétés du rôle dépendant ne sont pas les propriétés clés, la limite supérieure de la multiplicité du rôle dépendant doit être '*' – Yargicx
Droit, car cette structure ne suit pas un modèle 1: 1 normal, mais un 1: plusieurs. Essayez d'ajouter '[Index (IsUnique = true)]' à 'AccountTransaction.OrderLineId' pour voir si cela va le réparer. Je vais aussi éditer ma réponse. – CptRobby
Je suis presque sûr que la relation 1: 1 doit être directe à travers la clé des deux entités et non avec une propriété supplémentaire. Essayez de déplacer l'attribut [Key] à OrderLineId et changez le type en int (car cette valeur ne peut pas être nulle) – Miguel