2017-08-25 38 views
6

Używam visual studio do aktualizacji wszystkich moich środowisk z pewną migracją. Wszystko działało dobrze, używając poniższego polecenia.ef core nie używaj ASPNETCORE_ENVIRONMENT podczas aktualizacji bazy danych

update-database -Migration initMigrationProduct -c ProductContext -Environment Production 

W ef core 2.0 to polecenie zostało zmienione, a parametr -Environment został usunięty. w dokumentach to powiedziało.

"W wersji 2.0 można zamiast tego użyć zmiennej środowiskowej ASPNETCORE_ENVIRONMENT ."

https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

mam teraz próbował na wszelkiego rodzaju sposoby, ale gdy uruchomię update-database EF rdzenia 2.0 to Do not użyć zmiennej ASPNETCORE_ENVIRONMENT. Próbowałem ustawić rejestr, właściwości aplikacji.

Proszę dać mi znać, co muszę zrobić, aby pracować z aktualizowaniem różnych środowisk?

Jeśli uruchomię aplikację z różnymi ustawieniami lanch, to działa, ale nie korzystam z konsoli menedżera pakietów.

+0

spróbuj 'zestaw ASPNETCORE_ENVIRONMENT = EnvironmentName' przed wykonaniem polecenia. –

+0

Czy używasz zachęty PowerShell? Będziesz musiał użyć '$ env: ASPNETCORE_ENVIRONMENT = 'EnvironmentName'' – bricelam

+0

Próbowałem go, ustawiłem ASPNETCORE_ENVIRONMENT = Production w konsoli PM w visual studio, ale nie używa ono środowiska, w którym po prostu używa domyślnego programowania. – joakimja

Odpowiedz

1

Korzystanie z menedżera pakietów w visual studio było dla mnie ślepym zaułkiem. Rozwiązaniem było
1. Dodaj poniżej w .csproj w projekcie startowym w rozwiązaniu.
<ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> </ItemGroup>


2. Otwórz narzędzie poleceń (cmd) i przejdź do tego samego folderu jako .csproj dla projektu startowym znajdują projektu (domyślnie).
3. Uruchom polecenie jako Anton Toshik zasugerował set ASPNETCORE_ENVIRONMENT=Production
4. Następnie uruchom polecenie dotnet ef database update initMigrationProduct -c ProductContext A teraz działa.
UWAGA! W poleceniu database i update zmieniono miejsce od wcześniejszych wersji. I nie ma argumentów/kodów dla migracji.
Dokumenty wyjaśnią więcej po tym wyjaśnieniu.
https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

+0

Wpadłem na ten sam problem, gdy uaktualniłem wszystko do rdzenia 2.0. Odpowiedź @bricelam działa dla mnie (nawet jeśli wolę starszą wersję) i opublikowałem ten sam problem i odpowiedź tutaj: https://github.com/aspnet/EntityFrameworkCore/issues/9664 –

+0

Próba zrobienia tego dla środowiska "Development" . Zrobiłem ten sam problem, ale nie mogę go uruchomić z powyższym rozwiązaniem. Mam appsettings.json i appsettings.development.json (każdy z innym ciągiem połączenia db).Powyższe podejście nie działa, ani w cmd ani menedżerze pakietów. Konfiguracja jest pobierana poprawnie w obu środowiskach samej aplikacji. Chciałbym wgląd! – BenjiFB

+0

Co się dzieje, to ef odczytuje środowisko z ustawienia ASPNETCORE_ENVIRONMENT. Zanim uruchomisz bazę danych aktualizacji w cmd, sprawdź, na co wskazuje twój element, używając "echo% ASPNETCORE_ENVIRONMENT%". A jako deepinsight sprawdź swój startup.cs i wiersz. .AddJsonFile ($ "appsettings. {Env.EnvironmentName} .json", opcjonalnie: true) – joakimja

3

Aby ustawić zmienną ASPNETCORE_ENVIRONMENT w Package Manager Console (PMC), wewnątrz visual studio, aby korzystać Production pierwszy tego polecenia

$env:ASPNETCORE_ENVIRONMENT='Production' 

Następnie można użyć

Update-Database 

normalnie.

+0

Dzięki! To zadziałało dla mnie. – maxwell