Quando si creano classi POCO che contengono raccolte di tipi primitivi e sono persistenti per codice EF Innanzitutto, il miglior consiglio che ho trovato finora è creare una nuova classe che abbia un ID più il tipo primitivo:Codice quadro entità Prima e raccolte di tipi primitivi
Entity Framework and Models with Simple Arrays
Se ora ho diverse classi che richiedono proprietà di tipo ObservableCollection<string>
e sostituirli con ObservableCollection<EntityString>
(dove EntityString
è un tipo personalizzato con un ID e una proprietà di stringa), io alla fine con un tabella EntityString
con più colonne chiave esterna, una per ogni proprietà di tipo ObservableCollection<EntityString>
su tutti i tipi di calcestruzzo con tali proprietà.
Ciò comporta un aumento eccessivo delle colonne di chiavi esterne nulle nella tabella EntityString
.
Un approccio sarebbe quello di creare una sottoclasse di EntityString
e utilizzare il modello Table per Type per tali sottoclassi. Tuttavia, ciò richiede modifiche impreviste al modello di oggetto semplicemente per ospitare Entity Framework.
Domande:
- è scrivere l'incapsulante il modo migliore per gestire
Collection<PrimitiveType>
? - In tal caso, quali sono i pro ei contro di consentire più (molte) colonne di chiavi esterne rispetto alla creazione di tabelle personalizzate per tipo (al costo di un modello scomodo)?
Questa soluzione presuppone che un ';' (o qualunque altro carattere magico selezionato) non è un input valido per la stringa di base, corretto? –
È possibile invece esprimere la configurazione fluente 'WithOptional' con gli attributi di classe? Capisco che sono alternative l'una all'altra, ma finora non abbiamo trovato alcuna documentazione completa sull'argomento. –
Se la mappatura predefinita non rende la relazione opzionale non è possibile cambiarla con l'annotazione dei dati. L'annotazione dei dati deve essere posizionata su alcune proprietà, ma in questo caso non vi è alcuna proprietà nell'entità dipendente da utilizzare. –