8

Niedawno zaktualizowałem projekt WFC, który korzysta z Entity Framework z wersji 4.3.1 do wersji 5.0.
Używam tylko migracji objętych kodowaniem (bez automatycznych migracji).Okno dialogowe publikowania w Internecie nie wykrywa kontekstu mojej struktury encji jako kodu pierwszego

Poprzednio używałem Opublikuj profile, aby wdrożyć to rozwiązanie i zastosować migrację. Od uaktualnienia projektu do wersji EF5 część migracyjna nie działa, a okno dialogowe publikowania nie wykrywa kontekstu jako pierwszego migracji po kodzie.

W szczególności plik .pubxml zmienił się z wykrycia mojego kontekstu jako <Object Type="DbCodeFirst"> na , który jest niepoprawny dla mojego kontekstu.

Aby obejść ten problem, ręcznie dodałem konfigurację inicjatora bazy danych <entityFramework> do moich transformacji web.config, ale chciałbym zrozumieć, dlaczego profile publikowania nie działają. To było o wiele lepsze rozwiązanie.

+0

Spójrz na [to] (http://stackoverflow.com/questions/16543229/publish-entity-framework-code-first-migrations-with-no-context-in-the-startup-pr/16558527 # 16558527). Może to ci pomoże ... – Liel

Odpowiedz

0

Prawdopodobnie przegapiłeś dodanie odniesienia do EntityFramework do swojego projektu. Dodając referencję, powinieneś być w stanie kontrolować, czy opcja DbCodeFirst jest dostępna, czy też nie.

0

Jako this post suggests spróbuj użyć w pełni kwalifikowanej nazwy swojego DbContext jako nazwy ciągu połączenia. Zamiast:

Web.config

<connectionStrings> <add name="MyContext" .../> </connectionStrings>

Zastosowanie:

Web.config

<connectionStrings> <add name="MyNamespace.AnotherNamespace.MyContext" .../> </connectionStrings>

W moim przypadku, w celu korzystania z mojego istniejący publi sh profile (.pubxml), musiałem też ręcznie edytować <ObjectGroup Name="..." ...>. Prawdopodobnie działałoby też odtworzenie profili publikowania.

0

Miałem ten sam problem, ale nie w tym samym kontekście.

Korzystałem z Code First Migrations z istniejącą aplikacją ASP.NET MVC 5.2.3, używając EF 6.1.3 na miesiąc bez problemów. W pewnym momencie dodałem obsługę Windows Azure Storage, ale popełniłem kilka błędów:

  • Dodałem nowy projekt. Niestety wybrałem "Application Console" zamiast "Class Library". Próbowałem to naprawić, zmieniając go z powrotem do "Biblioteki klas" w "Ustawienia projektu"
  • Użyłem Nuget do Install-Package WindowsAzure.Storage, ale zainstalowałem go w projekcie MVC, a nie w bibliotece klas. Próbowałem to naprawić wykonując Uninstall-Package nad projektem MVC i instalowania go do właściwego projektu
  • Zadzwoniłem klasa w bibliotece klasy „WorkOrderStorage”
  • dodałem connectionString do <connectionStrings> elementu w pliku web.config i transformacji w web.release.config

Domyślam się, że mój projekt był teraz niespójny. Zauważyłem, że zapomniałoby o Code First Migrations (monitorowałem zmiany w.Plik pubxml):

  1. kiedy kładę odniesienie między projektu MVC i biblioteki zawierającej klasę WorkOrderStorage
  2. kiedy stworzył pustą klasę „WorkOrderStorage” w jednym z istniejących bibliotek

W końcu naprawiłem go, odtwarzając poprawnie tę bibliotekę od podstaw jako bibliotekę klas (z uwagi na obserwację 1). Nazwałam również klasę WorkOrderRepository (z uwagi na obserwację 2).

2

Raz zdarzyło się to na mnie podczas łączenia kolejnego zatwierdzenia programisty i uruchomienia przeładowania projektu Visual Studio. To spowodowało zmianę "DbCodeFirst" na "DbDacFx".

Po ponownym uruchomieniu Visual Studio wszystko wraca do tego, co powinno być.

Jeszcze jedna myśl.

+0

Szkoda, że ​​@josh nie oznaczył tego jako odpowiedzi, inne niż głosowanie w górę Mogę ci tylko zaoferować moją wdzięczność, to uratowało mój dzień, dosłownie –