Wpis z mikrobloga

#programowanie #csharp #dotnet #aspnet #mvc #webdev
Mam problem którego nie mogę rozwiązać, żadne dotychczas postowane w necie rozwiązanie nie zadziałało.

Mam sobie web api w mvc - prosta tabela, pozwala na logowanie się przez różne serwisy (fb, google itp) jak i normalnie rejestrować. Po zalogowaniu każdy ma dostęp do tabeli tworzonej przez siebie i tylko on ją widzi. Na kompie działa wszystko cacy, problem pojawia się po wrzuceniu w chmurę. Wyskakuje bardzo popularny błąd:

The model backing the 'ApplicationDbContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).

Próbowałem update'ować EF, próbowałem robić od nowa bazy danych, bawiłem się connectionstringami, dodawałem Database.SetInitializer(null); , no nic nie pomaga i ciągle jest ten sam błąd w chmurze. Pojawia się od razu po próbie zalogowania.

Ktoś ma jakiekolwiek pomysły? Jeśli potrzebujecie kodu to wrzucę zaraz na pastebin ale nie wiem dokładnie co (web.config, web.release, zawartość migrations?)
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Bambro: no dobra ale SQL serwer jakiś musisz mieć na hostingu przecież. W azure to jest oddzielna usługa od app service - nie wiem jak gdzie indziej
  • Odpowiedz
@lukpep: @Bambro:
Ogólnie chodzi o to, że prawdopodobnie connectionstring jest do Twojej lokalnej bazy na kompie, a na tamtym hostingu jest inna baza i muszą w niej się odpalić migracje, przeważnie przy publikacji przez VS jest taka opcja.
  • Odpowiedz
@drajvver: pushuję GITem do BitBucket który jest połączony z chmurą (appharbor), tam jest sql do którego jest wszystko ustawione przy release więc teoretycznie powinno chodzić i przy pierwszym uruchomieniu stworzyć tabelę, ale wywala błąd. Średnio ogarniam póki co chmury, uczę się tego
@lukpep: jest podobnie na appharbor, jeszcze raz sprawdzę connectionstringi, ale wydaje mi się że jest ok
  • Odpowiedz
@Bambro:

masz coś takiego przy starupie aplikacji?
Database.SetInitializer(new MigrateDatabaseToLatestVersion)?
możesz dostac sie do zdalnej bazy z poziomu ssms?
mozesz puscic recznie update-database na bazie zdlanej z konsoli w VS?
  • Odpowiedz
@Bambro:

1. Uruchom visual studio
2. Ustaw connection string produkcyjny
3. W nuget manager console wpisz komendę "Update-database"
4. Aplikacja działa
  • Odpowiedz
@blackphoenix: puszczam update przez nu-get manager console i wszystko na biezaco aktualizuje

do zdalnej bazy przez ssms nie probowalem sie dostac, aktualizowalem jedynie lokalne bo myslalem ze usuniecie _MigrationHistory pomoze ale nie pomaga

initializer powoduje tylko że mi wywala błąd nawet na kompie
@Nieann: próbowałem 10 razy wcześniej, teraz użyłem -Force i w końcu zajarzyło... ( ͡° ͜ʖ ͡°)
  • Odpowiedz