8
votes

Par défaut Bool à False lorsque NULL dans la base de données avec l'entité Framework 4.1 Code Premier

Comment puis-je définir la valeur par défaut lorsqu'une valeur (bit) dans la base de données est définie sur NULL. En ce moment, j'arrive à me dire que cela ne peut pas être nul lors du chargement d'un bool de la base de données.

Merci.


0 commentaires

3 Réponses :


6
votes

Votre modèle doit correspondre à la base de données - si la base de données peut avoir une valeur null, vous devez utiliser une nullable BOOL dans votre modèle - vous pouvez toutefois remplacer le setter pour cette propriété dans votre modèle pour transformer une null en une valeur fausse:

public class Foo
{
    private bool _bar;
    public bool? Bar
    {
        get { return _bar; }
        set
        {
            if (!value.HasValue)
            {
                _bar = false;
            }
            else
                _bar = value.Value;
        }
    }
}


0 commentaires

6
votes

Lorsque vous ajoutez une migration pour vos modifications de la base de données, mettez à jour la classe de migration pour définir la valeur par défaut avant de mettre à jour la base de données:

ALTER TABLE [Jobs] ADD  DEFAULT ((0)) FOR [IsAdvertisingRequired]
GO


0 commentaires

1
votes

Vous pouvez modifier ma réponse de Possibilité du champ DateTime par défaut à getDate () avec l'entité Framework Migrations? pour définir le défautValue / DefaultValuesQL sur false. Il utilise une classe wrapper qui implémente la migrationcodegenerator puis modifie la migrationopération (créatureOPeration / AddColumnoperation) pour définir la valeur par défautValuesQL pour les propriétés DateTime si elles ne sont pas nulles.


0 commentaires