J'utilise EF6 pour stocker des instances de la classe report
dans ma base de données. La base de données contient déjà des données. Supposons que je veuille ajouter une propriété à report
,
public class report {
// ... some previous properties
// ... new property:
public string newProperty{ get; set; }
}
Maintenant, si je vais dans la console du gestionnaire de packages et exécute
add-migration Report-added-newProperty
update-database
J'obtiendrai un fichier dans le dossier '/ Migrations' en ajoutant une colonne newProperty
à la table. Cela fonctionne bien. Cependant, sur les anciennes entrées de la base de données, la valeur de newProperty
est désormais une chaîne vide. Mais je veux que ce soit, par exemple, "vieux".
Ma question est donc la suivante: comment définir les valeurs par défaut des nouvelles propriétés (de tout type) dans le script de migration (ou ailleurs)?
Si vous voyez le code de migration généré, vous verrez AddColumn
AddColumn("dbo.report", "newProperty", c => c.String(nullable: false));
Vous pouvez ajouter defaultValue
AddColumn("dbo.report", "newProperty",
c => c.String(nullable: false, defaultValue: "old"));
Ou ajoutez defaultValueSql
AddColumn("dbo.report", "newProperty",
c => c.String(nullable: false, defaultValueSql: "GETDATE()"));
Vous devez changer la ligne dans votre script de migration qui ajoute la propriété/colonne comme ceci:
AddColumn("dbo.reports", "newProperty", c => c.String(nullable: false, defaultValue: "test"));
J'espère que cela aide quelqu'un. Mettre tout ensemble des réponses précédentes (exemple en utilisant une propriété booléenne):
1) Ajoutez une nouvelle propriété à l'entité.
/// <summary>
/// Determines if user is enabled or not. Default value is true
/// </summary>
public bool IsEnabled { get; set; }
2) Exécutez la commande ci-dessous pour ajouter la nouvelle modification dans les migrations.
add-migration addIsEnabledColumn
3) Un fichier de migration est créé à partir de la commande ci-dessus, ouvrez ce fichier.
4) Définissez la valeur par défaut.
public override void Up()
{
AddColumn("dbo.AspNetUsers", "IsEnabled", c => c.Boolean(nullable: false, defaultValue: true));
}