Oracle
 sql >> Base de données >  >> RDS >> Oracle

Valeur par défaut EF6 Oracle pour une colonne dans la première migration de code

J'ai rencontré le même problème en travaillant avec Oracle et EF6. Il semblerait que le fournisseur Oracle ne le supporte pas. Il existe cependant une solution, au cas où vous n'en auriez pas déjà trouvé.

Vous devez d'abord définir la propriété QuantityChanged comme nullable dans votre modèle (ou API Fluent, partout où vous gérez cela). Ensuite, vous pouvez exécuter la commande add-migration qui générera un fichier de migration avec la méthode 'AddColumn' dans la méthode 'Up'. Après cela, ajoutez une commande SQL explicite pour mettre à jour toutes les valeurs à la valeur par défaut nécessaire. Si vous avez besoin que la colonne soit NOT NULL, vous aurez besoin d'une autre commande SQL pour modifier la colonne et la définir sur NOT NULL.

    public override void Up()
    {
        AddColumn("MTA.PLAN_SHEETS", "QUANTITY_CHANGED", c => c.Decimal(precision: 3, scale: 0));
        Sql("UPDATE MTA.PLAN_SHEETS SET QUANTITY_CHANGED = 1");
        Sql("ALTER TABLE MTA.PLAN_SHEETS MODIFY QUANTITY_CHANGED NOT NULL");
    }

J'espère que ça aide. Référencez ma question si nécessaire :Comment définir une valeur par défaut pour une nouvelle colonne à l'aide des migrations EF6 ?