5

Wygląda na to, że CodeFirst przestaje odrabiać zadanie domowe, kiedy nie ma pełnej kontroli nad bazą danych (przypuszczam). Scenariusz to strona internetowa hostowana na Arvixe.com (lub przypuszczam, że jakikolwiek inny współużytkowany serwer hostingowy), gdzie muszę tworzyć bazy danych tylko z ich panelu sterowania (a NIE z Sql Server Management Studio, żeby powiedzieć ...) . Po utworzeniu pustej bazy danych, zarejestrować połączenie na stronie internetowej, i używam go do generowania bazy danych z obiektami POCO jak w:Dodatek migracja nie działa z zdalnymi bazami danych serwera sql w hostingu współdzielonym.

dodatek migracja m1 -targetdatabase myConnection

Generuje to właściwie moja pierwsza migracja , które mogą ubiegać się bez problemów z

update-baza -targetdatabase MyConnection

pierwszy obaw, nie jest zbyt ważne, jest to, że ponieważ jest istniejąca baza danych, to nie wyda polecenia Seed, więc muszę wstaw moje pierwsze rekordy ręcznie, ale to jest nie jest to wielki problem.

Następnie zmienić moje poco obiektów i muszę zaktualizować bazę danych, ale kiedy wydać INNY

dodatek migracja m2 -targetdatabase MyConnection

daje błąd:

System. Data.Entity.Migrations.MigrationsPendingException: Nie można wygenerować jawnej migracji, ponieważ oczekuje się następujących jawnych migracji: [201111081426466_m1]. Zastosuj oczekujące jawne migracje przed próbą wygenerowania nowej jawnej migracji.

To jest naprawdę dziwne, ponieważ jeśli patrzę na bazie danych, widzę nawet __MigrationHistory stołowego, ale wygląda na to, że nie może go rozpoznać ...

Każdy z tym samym problemem, lub jakiś dobry napiwek do zbadania? Z góry dziękuję, Andrea Bioli

+1

OK, właśnie w minutę po wysłaniu, zdałem sobie sprawę, że tabela __MigrationHistory NIE jest tworzona jako tabela systemowa ... więc oczywiste jest, że po raz drugi, nie może jej znaleźć ... więc problem wygląda jak być prawem do napisania tabeli we właściwym miejscu ... – Andrea

Odpowiedz

1

Miałem ten problem. Udało mi się go rozwiązać, podając parametr connectionString i connectionProviderName zarówno dla poleceń Update-Database i Add-Migration.

Jeśli masz wiele projektów w swoim rozwiązaniu z wieloma plikami konfiguracyjnymi, Menedżer pakietów wydaje się być zdezorientowany. W moim przypadku jeden projekt został wybrany jako domyślny projekt dla konsoli programu Package Manager, ale zamiast tego pobierał ciąg połączenia z domyślnego projektu uruchamiania Visual Studio.