Używam Entity Framework 4.3 na istniejącej bazie danych i mam kilka scenariuszy, które staram się zaspokoić.Najlepszy sposób na przyrostowe osadzanie danych w Entity Framework 4.3
Po pierwsze, jeśli usunę moją bazę danych, chciałabym, aby EF była odtwarzana od zera - z powodzeniem użyłem do tego inicjatora bazy danych CreateDatabaseIfNotExists.
Po drugie, jeśli zaktualizuję mój model, a baza danych już istnieje, chciałbym, aby baza danych została automatycznie zaktualizowana - z powodzeniem zastosowałem do tego celu Entity Framework 4.3 Migrations.
Oto moje pytanie. Załóżmy, że dodaję do mojego modelu nową tabelę, która wymaga pewnych danych referencyjnych, co jest najlepszym sposobem zapewnienia, że dane te zostaną utworzone zarówno podczas uruchamiania inicjatora bazy danych, jak i podczas migracji. Moją wolą jest, aby dane były tworzone podczas tworzenia bazy danych od zera, a także gdy baza danych zostanie zaktualizowana w wyniku przeprowadzonej migracji.
W niektórych przykładach migracji EF korzystałem z funkcji SQL() w metodzie UP migracji, aby utworzyć dane źródłowe, ale jeśli to możliwe, wolałbym użyć kontekstu do utworzenia danych źródłowych (jak widać w większości bazy danych przykładów inicjalizujących), ponieważ wydaje mi się dziwne, że używałbyś czystego sql, gdy cała idea EF wyrzeka się tego. Próbowałem użyć kontekstu w metodzie UP, ale z jakiegoś powodu nie sądziłem, że tabela utworzona podczas migracji istniała, gdy próbowałem dodać dane źródłowe bezpośrednio pod wywołaniem, aby utworzyć tabelę.
Dowolna mądrość doceniona.
Można faktycznie utworzyć kontekst w metodzie Up i użyć AddOrUpdate do wstawienia wierszy. Nie spowoduje to jednak zawarcia transakcji migracji, może więc powodować problemy. Nie można też zagwarantować kompilacji w przyszłości, gdy model ulegnie zmianie. – Betty
Próbowałem utworzyć kontekst w metodzie Up, ale wystąpił błąd informujący, że tabela nie istnieje. Zamiast tego wypróbuję SQL w metodzie "Up". –
@Ladislav Twoja głębia wiedzy na temat EF nadal mnie zadziwia, czy zastanawiałeś się nad napisaniem książki na ten temat i być może na temat częstych nieporozumień, które tu napotykasz? – kingdango