Entity FrameworkプロバイダーのOracle実装は非常に貧弱ですが、これを機能させる方法はいくつかあります。
-
単純だが煩わしい-NULLまたは独自のデータベース初期化子の実装を使用する:
Database.SetInitializer<DatabaseContext>(null);
または
class DatabaseInitializer : IDatabaseInitializer<DatabaseContext>
{
public void InitializeDatabase(DatabaseContext context)
{
// your implementation
}
}
Database.SetInitializer(new DatabaseInitializer());
データベースに最初にアクセスする前に初期化を設定します。
- 移行を使用する場合は、ビューを作成してから、変更を無視して移行を追加します。たとえば、パッケージコンソールの
add-migration initial -ignorechanges
を使用します。 。これにより、EFはDBスキーマとモデル間の不整合を無視します(ALL_TABLES
のテーブルのみをチェックするため) 、ビューではない)なので、テーブルを作成しようとはしません。 Oracle EFの実装にはバグがあり、最初の移行が空の場合、__MigrationHistory
が削除されて再作成されます。 したがって、ビューの移行を追加する前に、最初の移行に少なくとも1つのテーブルが含まれている必要があるか、後でテーブルを追加する必要があります。