sql >> Database >  >> RDS >> Oracle

EF6 Oracle-standaardwaarde voor een kolom in code first-migratie

Ik kwam hetzelfde probleem tegen bij het werken met Oracle en EF6. Het lijkt erop dat de Oracle-provider het niet ondersteunt. Er is echter een oplossing voor het geval je er nog geen hebt gevonden.

U moet eerst de eigenschap QuantityChanged als nullable instellen in uw model (of Fluent API, waar u dit ook doet). Vervolgens kunt u de opdracht add-migration uitvoeren die een migratiebestand genereert met de 'AddColumn'-methode in de 'Up'-methode. Voeg daarna een expliciete SQL-opdracht toe om alle waarden bij te werken naar de benodigde standaardwaarde. Als u wilt dat de kolom NOT NULL is, heeft u een ander SQL-commando nodig om de kolom te wijzigen en in te stellen op 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");
    }

Ik hoop dat dit helpt. Verwijs indien nodig naar mijn vraag:Hoe stel ik een standaardwaarde in voor een nieuwe kolom met EF6-migraties?




  1. Bungelende transacties in MySQL Innodb

  2. Hoe gebruik je opsommingen in Oracle?

  3. Hoe de maximale waarde van een numerieke kolom in SQL te vinden

  4. Gebruikers en authenticatie beheren in MySQL