Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment puis-je m'assurer que Linq to Sql ne remplace pas ou ne viole pas les valeurs par défaut de la base de données non nullable ?

Les classes générées par Linq-To-Sql ne récupèrent pas les contraintes de valeur par défaut.

Peut-être dans le futur, mais le problème est que les contraintes ne sont pas toujours des valeurs simples, elles peuvent aussi être des fonctions scalaires comme GetDate() , donc linq devrait en quelque sorte savoir comment les traduire. Bref, ça n'essaie même pas. C'est aussi un type de chose très spécifique à la base de données.

  • Vous pouvez écrire un générateur de code pour créer des classes partielles d'entité où vous pouvez extraire la valeur par défaut constante.
  • Alternativement, votre code de couche métier peut définir les valeurs par défaut dans les constructeurs à partir d'un fichier xml, et tout ce que vous avez à faire est de maintenir le fichier xml à jour.
  • Au lieu de faire le travail dans les constructeurs, vous pouvez émuler sql et ajouter des valeurs par défaut en inspectant le ChangeSet avant de soumettre les modifications à la base de données.

Le problème que vous rencontrez est décrit en détail dans CodeProject - Setting Default Values ​​for LINQ Bound Data