2012-03-24 4 views
0

EF rend certaines propriétés non nulles par défaut dans la base de données, y a-t-il un moyen de surcharger cela pour certaines propriétés? J'ai essayé de rechercher une annotation de données mais je n'ai rien trouvé.C# Entity Framework 4.3

J'utilise le code d'abord les propriétés sont un int et un datetime

+2

utilisez-vous le code en premier? quel est le type de la propriété? –

+1

Montrez-nous du code, s'il vous plaît. – IAbstract

+0

Peut-être une question en double - http://stackoverflow.com/questions/7941472/entity-framework-code-first-default-values-on-non-nullable-types –

Répondre

4

Je suppose que vous utilisez-premier code. Vous êtes probablement trouvé non annulable pour les types qui sont en effet non annulable (types de valeur), comme int, bool, etc. Vous devez utiliser la version annulable de ces afin de le faire:

int? MyColumnThatIsNullable 

et PAS ce

int MyColumnThatIsNOTNullable 

réfléchissons à la façon du code fonctionnerait et cela fera sens pour vous. Si un champ est un int et qu'une valeur nulle est essayée pour être passée dans le code, alors vous aurez soit une sorte d'erreur, soit une valeur magique (par défaut). Cela ne représentera pas correctement la valeur dans la base de données. Donc, si vous utilisez la version nullable, alors la valeur nulle dans la base de données peut être représentée pour ce qu'elle est vraiment, une valeur nulle.

+0

Hah! maintenant que vous en parlez qui est parfaitement logique, et je n'arrive pas à comprendre comment je l'ai manqué. Merci – Roge

+1

@Roge Aucun problème, j'ai ajouté une explication ci-dessous ma réponse originale (même si vous avez dit que vous l'avez eu :)). Comme d'habitude, les réponses acceptées (une fois la période de grâce de 15 min terminée) et les upvotes sont appréciés :) –