2010-08-27 7 views
9

Il se peut que je manque quelque chose, mais une base de données SQL Server 2008 R2 générée par Entity Framework 4 ne dispose pas des valeurs par défaut que j'ai configurées via le concepteur EF.Entity Framework 4 et valeurs par défaut

Des idées sur ce que je pourrais faire de mal?

Répondre

12

La raison en est que les valeurs par défaut que vous pouvez définir dans le modèle conceptuel et les valeurs par défaut de la base de données sont totalement indépendant.
Considérons une situation typique où vous avez déjà une base de données qui a des valeurs par défaut définies sur les colonnes, par la même occasion, cette valeur par défaut ne sera pas récupérée dans le schéma de magasin ou par l'entité elle-même. Par conséquent, si vous définissez une valeur par défaut pour une propriété d'une entité dans un modèle qui sera utilisé pour générer un schéma de base de données, il est important de savoir qu'aucune des valeurs par défaut définies pour la propriété d'une entité poussé à la base de données.

Cependant, il convient de mentionner que le modèle de génération de code EntityObject T4 par défaut et le modèle POCO Entities par défaut définiront tous deux la valeur par défaut de cette propriété dans la classe générée.

Vous pouvez vérifier cela en regarder de plus près yourModelName.edmx.sql fichier qui a été généré par VS2010 une fois que vous cliquez sur « Générer base de données modèle ... ». Comme vous pouvez le voir, il n'y a pas une telle chose comme ça dans ce:
ADD DEFAULT CONTRAINTE « Valeur par défaut » POUR YourColumnName

+0

Merci pour la réponse concise. Cela a un sens parfait. – Shaun

+0

Cela a du sens mais rend les migrations de code plus difficiles. Ajouter un champ non nullable à une table existante, le script de migration généré de la comparaison des deux schémas dans SQL Studio ne fonctionnera pas. Doit être fait manuellement à nouveau. – simbolo

Questions connexes