Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

EF6 Nilai default Oracle untuk kolom dalam kode migrasi pertama

Saya menemukan masalah yang sama saat bekerja dengan Oracle dan EF6. Tampaknya penyedia Oracle tidak mendukungnya. Ada solusi, jika Anda belum menemukannya.

Anda harus terlebih dahulu mengatur properti QuantityChanged sebagai nullable dalam model Anda (atau Fluent API, di mana pun Anda menangani ini). Kemudian Anda dapat menjalankan perintah add-migration yang akan menghasilkan file migrasi dengan metode 'AddColumn' di metode 'Naik'. Setelah itu, tambahkan perintah SQL eksplisit untuk memperbarui semua nilai ke nilai default yang diperlukan. Jika Anda membutuhkan kolom menjadi NOT NULL untuk bergerak maju, Anda akan memerlukan perintah SQL lain untuk memodifikasi kolom dan menyetelnya ke 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");
    }

Semoga membantu. Referensi pertanyaan saya jika diperlukan:Bagaimana cara menetapkan nilai default untuk kolom baru menggunakan migrasi EF6?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pertukaran berat di Oracle 12.1.0.2

  2. _gc_fusion_compression

  3. LISTAGG berbeda yang ada di dalam subquery dalam daftar SELECT

  4. Karakter tidak valid dalam string kueri SQL (ORA-00911)

  5. Oracle mengembalikan alias yang sama untuk kasus yang berbeda pada pilih