Codice quadro entità In primo luogo è possibile generare il DB per i seguenti POCO.Codice struttura entità Primo: il vincolo FOREIGN KEY può causare cicli o più percorsi a cascata
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; }
}
vorrei stabilire la relazione con il Primo e il Secondo articolo tramite campi ID piuttosto che l'un'intera classe "Item". Quindi:
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; }
}
funziona anche. Modifica: questo in realtà non funzionava. Genera solo colonne aggiuntive FirstItem_Id1 e SecontItem_Id2.
Ma proprio la modifica delle proprietà di chiave esterna per FirstItemId, SecondItemId, (senza il trattino) in questo modo:
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; }
}
risultati nella seguente eccezione.
{"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."}
Perché? E cosa posso fare per evitare questa eccezione.
Questa alternativa mi ha aiutato meglio http://stackoverflow.com/questions/19373310/introducing-foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths – Mzn