Внедряването на доставчика на рамка на Entity от 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
таблица, така че или вашата първоначална миграция трябва да съдържа поне една таблица, преди да добавите миграцията на изгледа, или трябва да добавите таблица след това.