Entity Framework Code en premier: la contrainte FOREIGN KEY peut provoquer des cycles ou plusieurs chemins en cascade

Entity Framework Code First peut générer la base de données pour la suite de POCOs.

public class Item {
    public int Id { get; set; }
    public string Name { get; set; }
}

public class ItemPair {
    public int Id { get; set; }

    public virtual Item FirstItem { get; set; }
    public virtual Item SecondItem { get; set; }
}

Je voudrais etablir la relation avec le Premier et le Deuxième élément via les champs ID, plutôt que la totalité d'un "Élément" de la classe. Donc:

public class ItemPair {
    public int Id { get; set; }

    public virtual Item FirstItem { get; set; }
    public int FirstItem_Id { get; set; }

    public virtual Item SecondItem { get; set; }
    public int SecondItem_Id { get; set; }
}

fonctionne également. Modifier: Cela ne fait pas travailler. Juste génère plus de FirstItem_Id1 et SecontItem_Id2 colonnes.

Mais simplement de changer les propriétés de clés étrangères pour FirstItemId, SecondItemId, (sans le trait de soulignement) comme suit:

public class ItemPair {
    public int Id { get; set; }

    public virtual Item FirstItem { get; set; }
    public int FirstItemId { get; set; }

    public virtual Item SecondItem { get; set; }
    public int SecondItemId { get; set; }
}

résultats de l'exception suivante.

{"Introducing FOREIGN KEY constraint 'ItemPair_SecondItem' on table 'ItemPair' may cause
cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION,
or modify other FOREIGN KEY constraints.\r\nCould not create constraint. 
See previous errors."}

Pourquoi? Et que puis-je faire pour éviter cette exception.

source d'informationauteur Pauly