5

Ich habe eine ASP.NET MVC-Anwendung, die Entity Framework 5.0 und Code First verwendet.Bei der Veröffentlichung von VS 2012 auf eine Azure-Website werden meine Entity Framework-Startdaten nicht in SQL Azure eingefügt

Ich habe meine Website mit Visual Studio 2012 zu Azure Website veröffentlicht. Alles scheint zu funktionieren, außer dass die Seed-Daten nicht in SQL Azure eingefügt werden. Die Website funktioniert, die Datenbank ist erstellt, aber die Seed-Daten sind nicht eingefügt. Wenn ich das auf meinem lokalen Rechner starte, funktioniert alles korrekt.

Basierend auf Beispielen, die ich gesehen habe, gibt es bei der Veröffentlichung von Visual Studio 2012 eine Option namens "Execute Code First Migration" (siehe Bild unten).

enter image description here

Aber wenn ich versuche, meine Website die Option „Ausführen von Code Erste Migration“ zu veröffentlichen ist nicht verfügbar. enter image description here

Ich glaube, das kann etwas damit zu tun haben, wie meine Lösung konfiguriert ist. Ich habe 3 Projekte, die meine Bewerbung ausmachen.

  • Webseite - Dies ist ein ASP.NET MVC-Projekt. Es hat ein Referenz-Entity-Framework, aber der gesamte Datenzugriffscode (DBContext) befindet sich im Datenprojekt.
  • Domäne - Dies ist eine Klassenbibliothek. Es hat keinen Verweis auf Entity Framework
  • Daten - Dieses Projekt verweist auf Entity Framework. Ich habe eine Configuration-Klasse, die von DbMigrationsConfiguration erbt. In überschreibt diese Konfigurationsklasse I die Seed-Methode.

Wieder funktioniert das alles auf meinem lokalen PC. Zum größten Teil funktioniert alles auf Azure; Die Website funktioniert, die Datenbank wird erstellt, aber die Seed-Daten werden nicht eingefügt.

Gibt es für mein Szenario Empfehlungen, wie die Seed-Daten in SQL Azure eingefügt werden, wenn ich von Visual Studio 2012 aus publiziere?

+0

Möglicherweise müssen Sie den Entity Framework-Kontext in der Datei web.config definieren. Anweisungen finden Sie [hier] (http://www.ralphlavelle.net/2012/09/entity-framework-code-first-webconfig.html) im Detail. –

Antwort

0

Sie müssen Ihre pubxml-Datei (Properties/PublishingProfiles/YourName.pubxml) manuell bearbeiten, damit das Kontrollkästchen angezeigt wird. Ich habe einen Blog-Beitrag beschreibt die Situation und die Lösung hier: http://www.dominicstpierre.net/2012/11/enable-code-first-migrations-check-box.html

Dieser Teil manuell

<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> 

ändern Namespace.Models.YourDBClass von Ihrer Klasse geändert werden müssen, die DbContext, ändern Namespace.Migratins.Configuration erbt Passen Sie Ihren Migrationskonfigurationsnamespace und Assambly mit Ihrem Assambly-Namen an.

Speichern und öffnen Sie den Veröffentlichungsassistenten, der dieses Kontrollkästchen enthält.

+1

Dies scheint in VS2013update4 nicht mehr zu funktionieren. – sheamus

Verwandte Themen