Oracle
 sql >> Datenbank >  >> RDS >> Oracle

EF6-Oracle-Standardwert für eine Spalte in der Code-First-Migration

Bei der Arbeit mit Oracle und EF6 bin ich auf das gleiche Problem gestoßen. Es scheint, dass der Oracle-Anbieter dies nicht unterstützt. Es gibt jedoch eine Problemumgehung, falls Sie noch keine gefunden haben.

Sie müssen zuerst die Eigenschaft QuantityChanged in Ihrem Modell (oder der Fluent-API, wo immer Sie damit umgehen) als nullable festlegen. Dann können Sie den Befehl add-migration ausführen, der eine Migrationsdatei mit der Methode „AddColumn“ in der Methode „Up“ generiert. Fügen Sie danach einen expliziten SQL-Befehl hinzu, um alle Werte auf den erforderlichen Standardwert zu aktualisieren. Wenn Sie möchten, dass die Spalte in Zukunft NOT NULL ist, benötigen Sie einen weiteren SQL-Befehl, um die Spalte zu ändern und auf NOT NULL zu setzen.

    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");
    }

Ich hoffe das hilft. Verweisen Sie bei Bedarf auf meine Frage:Wie lege ich einen Standardwert für eine neue Spalte mit EF6-Migrationen fest?