Implementasi Oracle dari penyedia kerangka kerja Entitas sangat buruk tetapi ada beberapa cara bagaimana membuatnya bekerja.
-
Sederhana namun menjengkelkan - menggunakan NULL atau implementasi penginisialisasi basis data sendiri:
Database.SetInitializer<DatabaseContext>(null);
atau
class DatabaseInitializer : IDatabaseInitializer<DatabaseContext>
{
public void InitializeDatabase(DatabaseContext context)
{
// your implementation
}
}
Database.SetInitializer(new DatabaseInitializer());
Atur inisialisasi sebelum akses pertama ke database Anda.
- Jika Anda ingin menggunakan migrasi, buat tampilan lalu tambahkan migrasi dengan mengabaikan perubahan, misalnya menggunakan konsol paket
add-migration initial -ignorechanges
. Ini akan membuat EF mengabaikan inkonsistensi antara skema dan model DB (karena hanya memeriksa tabel dariALL_TABLES
, bukan tampilan) sehingga tidak akan mencoba membuat tabel. Ada bug dalam implementasi Oracle EF yang jika migrasi awal kosong, ia akan turun dan membuat ulang__MigrationHistory
tabel sehingga migrasi awal Anda harus berisi setidaknya satu tabel sebelum Anda menambahkan migrasi tampilan atau Anda perlu menambahkan tabel setelahnya.