E 'cattive pratiche per consentire i campi nulli a una tabella DB per semplificare Modello Binding da Ajax?
-
16-09-2019 - |
Domanda
Si prega di leggere qui e here per ottenere una rapida panoramica del mio problema e per vedere esattamente cosa intendo quando dico Modello Binding da Ajax.
sarebbe una cattiva idea di produrre i campi chiave stranieri annullabile al fine di consentire per il modello vincolante da javascript?
Per esempio, vogliamo associare a un oggetto Person durante una chiamata Ajax per ... (La classe Person è creato dal Entity Framework)
public ActionResult Create(Person personToCreate)
{
//Create person here
}
Se il Person
aveva un oggetto Pet
che era una chiave esterna nel db, non è possibile passare l'oggetto Pet
insieme agli altri dati della chiamata AJAX. Quindi, a meno che il Pet
è nullable nel DB, legandosi a Person
non avrebbe funzionato.
Quindi quello che voglio sapere è ... per fare Modello Binding, dovrebbe / posso nullo i campi db non riesco a passare da javascript? o devo fare un personalizzato Modello Binder e si legano a una versione più "piatto" dell'oggetto al fine di seguire le migliori pratiche? esempio di versione piatta dell'oggetto:
public class SimplePerson() {
private string firstName;
private string lastName;
private string petName;
}
Il motivo che mi chiedo è perché un sacco di miei Entity Framework classi create contengono chiavi esterne, il che significa che sarà necessario creare un duplicato piatta della quasi totalità di tali classi, e sembra andare contro l'intera DRY principale.
Soluzione
Ho letto su ciò che si è collegato e postato, non posso davvero pensare a una buona soluzione fuori dalla parte superiore della mia testa, ma l'intero concetto di cambiare il vostro database sottostante per il bene di AJAX mi mette a disagio. So che non è una grande risposta, sto lottando con diversi problemi di progettazione EF in questo momento me stesso, e ci sono stati diversi momenti in cui ho avuto la tentazione di modificare il database per il bene del modello, ma facendo che è sempre venuto torna a mordere me in passato.