9

Utworzyłem aplikację MVC 3.0 przy użyciu Visual Studio 2012, .NET 4.5 i Entity Framework 5.0.Entity Framework Code First Data Migrations nie działa z VS2012 Web Deploy

Korzystanie z migracji po pierwszym kodzie danych, jestem w stanie poprawnie propagować zmiany modelu w mojej lokalnej testowej bazie danych, ale nie mogę się dowiedzieć, jak to zrobić, gdy wdrażam moje serwery pomostowe i produkcyjne za pomocą narzędzia Web Deploy.

Czytałem następujący artykuł ...

http://msdn.microsoft.com/en-us/library/dd394698(v=vs.110)#dbdacfx

... co wyjaśnia, co ma się stać, ale to nie działa dla mnie, jako Web Deploy Wydaje stanie wykryć, że używam Struktura Entity. Tutorial pokazuje pole wyboru, aby umożliwić wykonanie kod najpierw migracji ...

Web Deploy Publish Dialog

... ale mój dialogowe pokazuje tylko Update Database wyboru dla każdej bazy danych.

Przeczytałem, że aby Visual Studio wykryło użycie kontekstu Entity Framework, Web.config musi zawierać element, który je definiuje. Oto mój:

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 

    <contexts> 
     <context type="MyContext, MyAssembly"> 
      <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyContext, MyAssembly], [MyConfig, MyAssembly]], EntityFramework"> 
       <parameters> 
        <parameter value="MyConnectionStringName"/> 
       </parameters> 
      </databaseInitializer> 
     </context> 
    </contexts> 
</entityFramework> 

Wszelkie sugestie będą bardzo mile widziane.

Dzięki,

Tim

Odpowiedz

3

I odkryli rozwiązanie tego problemu poprzez eksperymentowanie.

W rzeczywistości moja aplikacja MVC została stworzona przez VS2012 przez konwersję z rozwiązania VS2010. Ponieważ proces konwersji nie zgłaszał żadnych problemów, założyłem, że wszystko zostało poprawnie przekonwertowane, w tym profile publikowania.

Odkryłem jednak, że problem polegał na konwersji tych profili i chyba że ręcznie edytuję ich pliki XML, najwyraźniej nie ma sposobu, aby pobrać stare zaimportowane profile do udziału w Code First Migrations.

Po prostu tworzenie nowych profili publikowania w przekonwertowanym rozwiązaniu powoduje oczekiwane zachowanie.

+1

Dbamy o wyjaśnienie różnic? –

+1

@Richard: w obrębie nowo utworzony profil zawiera szereg dodatkowych elementów , z których każdy reprezentuje klasę kontekstu. Zakładam, że istnieje pewien proces wykrywania, który uruchamia się po pierwszym uruchomieniu Web Deploy, który nie jest wykonywany jako część konwersji rozwiązania VS2012. –

0

Spróbuj tego: Enable-Migracje -Force

Upewnić się, że poniżej jest ustawiony na true AutomaticMigrationsEnabled = true;

Ponownie opublikuj - zadziałał dla mnie