2015-11-25 23 views

Odpowiedz

18

Znalazłem rozwiązanie na własną rękę:

(context.GetService<IDatabaseCreator>() as RelationalDatabaseCreator).Exists() 

Działa EF 7.0.0-RC1-ostatecznej wersji dla SqlServer

+0

Działa również z EF Core 1.1.0-preview1-final –

+0

To działa. Bardzo dziękuję – thangchung

+1

Entity Framework Core 2.0: '(context.Database.GetService () as RelationalDatabaseCreator) .Exists()' – Marcel

3

Jeśli sprawdzasz, czy istnieje, aby określić, czy potrzebujesz go utworzyć, możesz zamiast tego użyć tego;

context.Database.EnsureCreated(); 
+1

Muszę tylko wiedzieć, jeśli istnieje, ja nie trzeba tworzyć –

+0

, to fajne, ale ta metoda zwróci "true", jeśli baza danych została utworzona, a false, jeśli już istniała. Przynajmniej to, co mówi w tej chwili (v 1.1.1.0) – Enn

+2

Nie używaj jednocześnie migracji ORAZ 'ZapewnijCreated()'! Tworzy bazę danych ** bez ** historii migracji tabeli '__EFMigrationsHistory'. Zatem 'Database.GetPendingMigrations()' powróci i 'Database.Migrate()' zastosuje ** wszystkie ** migracje. Oczywiście to się nie udaje. W rzeczywistości nie widzę żadnej korzyści w korzystaniu z opcji 'WykonajCreated()' i 'NaprawDeleted()' (z wyjątkiem testów jednostkowych). Nawet zmiana 'DropDatabaseIfModelChanges' nie będzie działać: Będziesz potrzebować historii migracji, aby wykryć zmiany modelu! – Marcel

Powiązane problemy