Oracle
 sql >> Database >  >> RDS >> Oracle

EF6 Valore predefinito di Oracle per una colonna nella prima migrazione del codice

Ho riscontrato lo stesso problema lavorando con Oracle ed EF6. Sembrerebbe che il provider Oracle non lo supporti. C'è un modo per aggirare il problema, nel caso tu non l'abbia già trovato.

Devi prima impostare la proprietà QuantityChanged come nullable nel tuo modello (o API Fluent, ovunque tu lo gestisca). Quindi puoi eseguire il comando add-migration che genererà un file di migrazione con il metodo "AddColumn" nel metodo "Up". Successivamente, aggiungi un comando SQL esplicito per aggiornare tutti i valori al valore predefinito necessario. Se hai bisogno che la colonna sia NOT NULL, avrai bisogno di un altro comando SQL per modificare la colonna e impostarla su 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");
    }

Spero che questo aiuti. Fai riferimento alla mia domanda se necessario:Come faccio a impostare un valore predefinito per una nuova colonna utilizzando le migrazioni EF6?