0

Je reçois SqlCeException ... The column cannot contain null values. [ Column name = Subtotal lorsque j'exécute la migration Entity Framework suivante.Entity Framework Migrations: convertir des décimales? en décimal avec la valeur par défaut pour les valeurs nulles

public override void Up() 
{ 
    AlterColumn("BuildingOrders", "Subtotal", 
     c => c.Decimal(nullable: false, precision: 18, scale: 2)); 
} 

Est-ce la bonne façon de définir la valeur par défaut? Il semble trop facile :)

public override void Up() 
{ 
    AlterColumn("BuildingOrders", "Subtotal", 
     c => c.Decimal(nullable: false, precision: 18, scale: 2, defaultValue: 0)); 
} 

J'ai essayé après avoir vu une question similar pour le rubis sur des rails.

+0

Je suppose que c'était faux – Benjamin

Répondre

1

Cela ne fonctionne pas de cette façon. Vous définissez la valeur par défaut dans la base de données mais elle n'est pas utilisée. Vous ne pouvez pas définir votre propriété comme nullable dans la classe lorsque la colonne mappée n'est pas Nullable. La valeur par défaut dans la base de données est appliquée uniquement si vous n'insérez aucune valeur dans cette colonne mais EF insère toujours la valeur dans toutes les colonnes qui ne sont pas générées par la base de données (les valeurs des colonnes générées ne peuvent pas être définies dans l'application). vous avez défini votre propriété comme nulle et EF insère null explicitement => exception.

+0

Ok, j'écrirai une méthode pour convertir tous les zéros à 0.00 - merci – Benjamin

Questions connexes