5

Mam aplikację ASP.NET MVC, która używa Entity Framework 5.0 i Code First.Podczas publikowania z VS 2012 do witryny Azure moje dane źródłowe Entity Framework nie są wstawiane do SQL Azure

Opublikowałem swoją witrynę przy użyciu Visual Studio 2012 do witryny Azure. Wszystko wydaje się działać z wyjątkiem tego, że dane źródłowe nie są wstawiane do SQL Azure; strona działa, baza danych jest zbudowana, ale dane źródłowe są wstawiane nie. Kiedy uruchomię to na moim komputerze lokalnym, wszystko działa poprawnie.

Na podstawie przykładów, które widziałem, podczas publikowania z Visual Studio 2012 istnieje opcja o nazwie "Execute Code First Migration" (patrz obrazek poniżej).

enter image description here

Ale gdy próbuję opublikować opcję moja strona „Execute kod najpierw Migration” jest nie dostępny. enter image description here

Uważam, że może to mieć coś wspólnego z konfiguracją mojego rozwiązania. Mam 3 projekty, które składają się na moją aplikację.

  • Strona internetowa - To jest projekt ASP.NET MVC. Ma referencyjny framework Entity, ale cały kod dostępu do danych (DBContext) znajduje się w projekcie Data
  • Domena - To jest biblioteka klas. Nie ma odniesienia do Entity Framework
  • Dane - Ten projekt ma odniesienie do Entity Framework. Mam klasy Configuration, która dziedziczy po DbMigrationsConfiguration. W ta klasa konfiguracji I przesłania metodę Seed.

Znowu to wszystko działa na moim lokalnym komputerze. W przeważającej części wszystko działa na platformie Azure; strona internetowa działa, baza danych zostanie zbudowana, ale dane źródłowe nie zostaną wstawione.

Dla mojego scenariusza, czy istnieją jakieś zalecenia, jak uzyskać dane źródłowe do wstawienia do SQL Azure, gdy robię publikację z Visual Studio 2012?

+0

Może być konieczne zdefiniowanie kontekstu Entity Framework w pliku web.config. Instrukcje można znaleźć [tutaj] (http://www.ralphlavelle.net/2012/09/entity-framework-code-first-webconfig.html) w szczegółach. –

Odpowiedz

0

Będziesz musiał ręcznie edytować plik pubxml (Properties/PublishingProfiles/YourName.pubxml), aby pojawiło się pole wyboru. Mam blogu opisujący sytuację i rozwiązanie tutaj: http://www.dominicstpierre.net/2012/11/enable-code-first-migrations-check-box.html

Ta część musi być ręcznie zmieniony

<PublishDatabaseSettings> 
    <Objects xmlns=""> 
    <ObjectGroup Name="Namespace.Models.YourDBClass" Order="1" Enabled="True"> 
     <Destination Path="your-connection-string-goes-here" /> 
     <Object Type="DbCodeFirst"> 
     <Source Path="DBMigration" DbContext="Namespace.Models.YourDBClass, AssamblyName" MigrationConfiguration="Namespace.Migrations.Configuration, Assambly" Origin="Convention" /> 
     </Object> 
    </ObjectGroup> 
    </Objects> 
</PublishDatabaseSettings> 

Zmień Namespace.Models.YourDBClass przez klasy, która dziedziczy DbContext, zmiana Namespace.Migratins.Configuration aby dopasować swoją przestrzeń nazw konfiguracji migracyjnej i Assambly do nazwy Assambly.

Zapisz i otwórz kreatora publikowania, a otrzymasz to pole wyboru.

+1

To wydaje się już nie działać w VS2013update4. – sheamus

Powiązane problemy