Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come posso assicurarmi che Linq to Sql non sovrascriva o violi i valori predefiniti del DB non annullabili?

Le classi generate da Linq-To-Sql non raccolgono i vincoli del valore predefinito.

Forse in futuro, ma il problema è che i vincoli non sono sempre valori semplici, possono anche essere funzioni scalari come GetDate() , quindi linq dovrebbe in qualche modo sapere come tradurli. Insomma, non ci prova nemmeno. È anche un tipo di cosa molto specifico per il database.

  • Potresti scrivere un generatore di codice per creare classi parziali di entità in cui puoi estrarre il valore predefinito constriant.
  • In alternativa, il codice del tuo livello aziendale potrebbe impostare i valori predefiniti nei costruttori da un file xml e tutto ciò che devi fare è mantenere aggiornato il file xml.
  • Invece di eseguire il lavoro nei costruttori, puoi emulare sql e aggiungere valori predefiniti ispezionando il ChangeSet prima di inviare le modifiche al database.

Il problema che stai riscontrando è ampiamente descritto in CodeProject - Impostazione dei valori predefiniti per i dati vincolati LINQ