Diciamo che ho le seguenti classi, generate automaticamente da Entity Framework
, che hanno un'associazione:
public class Parent()
{
public int ParentID { get; set; } // PK
public int ChildID { get; set; } // FK
public string Description { get; set; }
public Child Child { get; set; } // Navigation property
}
public class Child()
{
public int ChildID { get; set; } // PK
public Parent Parent { get; set; } // Navigation property
}
Come puoi vedere, la classe Parent contiene una proprietà di chiave esterna per la classe Figlio .
Ora, supponiamo di voler recuperare alcuni dati dal mio database con LINQ
. Quello che vorrei fare è creare una classe personalizzata (modello) in modo che non debba lavorare con le classi generate automaticamente (posso aggiungere facilmente più proprietà, metodi, ...).
public class ChildModel()
{
public int ChildID { get; set; }
// More properties/methods
}
Durante la creazione della classe ParentModel , ho due modi per creare questa classe:
Una classe con la proprietà ChildID e una proprietà di navigazione Bambino .
public class ParentModel()
{
public int ParentID { get; set; }
public int ChildID { get; set; }
public ChildModel Child { get; set; }
}
O una classe con solo una proprietà di navigazione Figlio e nessuna ChildID proprietà.
public class ParentModel()
{
public int ParentID { get; set; }
public ChildModel Child { get; set; }
}
Con il secondo metodo, devo sempre creare una classe extra quando ho solo bisogno di ChildID , con il secondo metodo che non è necessario. Ma quando creo ChildModel , devo inizializzare entrambi ChildID s in modo da non incorrere in problemi successivi.
Quale sarebbe il modo migliore per creare le mie classi di modelli? Con o senza la chiave esterna? Ci sono vantaggi / svantaggi quando si utilizza uno dei due metodi sopra descritti?