Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Tom Dykstra
In dieser Reihe von Lernprogrammen erfahren Sie, wie Sie ein ASP.NET Webanwendungsprojekt bereitstellen (veröffentlichen), das eine SQL Server Compact-Datenbank mit Visual Studio 2012 RC oder Visual Studio Express 2012 RC für Web enthält. Sie können Visual Studio 2010 auch verwenden, wenn Sie das Web Publish Update installieren. Eine Einführung in die Reihe finden Sie im ersten Lernprogramm in der Reihe.
Ein Tutorial, das Bereitstellungsfeatures zeigt, die nach der RC-Version von Visual Studio 2012 eingeführt wurden, und erklärt, wie andere SQL Server-Editionen als SQL Server Compact bereitgestellt werden und wie Windows Azure-Websites bereitgestellt werden, finden Sie unter ASP.NET Webbereitstellung mit Visual Studio.
Übersicht
In diesem Lernprogramm erfahren Sie, wie Sie eine Datenbankaktualisierung in einer vollständigen SQL Server-Datenbank bereitstellen. Da Code First Migrationen alle Schritte beim Aktualisieren der Datenbank ausführen, ist der Prozess fast identisch mit dem, was Sie für SQL Server Compact im Lernprogramm zum Bereitstellen einer Datenbankaktualisierung getan haben.
Erinnerung: Wenn Beim Durchlaufen des Lernprogramms eine Fehlermeldung angezeigt wird oder etwas nicht funktioniert, überprüfen Sie unbedingt die Problembehandlungsseite.
Hinzufügen einer neuen Spalte zu einer Tabelle
In diesem Abschnitt des Lernprogramms nehmen Sie eine Datenbankänderung und die entsprechenden Codeänderungen vor, und testen Sie sie dann in Visual Studio zur Vorbereitung auf die Bereitstellung in den Test- und Produktionsumgebungen. Die Änderung umfasst das Hinzufügen einer OfficeHours Spalte zur Instructor Entität und das Anzeigen der neuen Informationen auf der Seite " Kursleiter" .
Öffnen Sie im Projekt ContosoUniversity.DAL Instructor.cs, und fügen Sie die folgende Eigenschaft zwischen den Eigenschaften HireDate und Courses hinzu.
[MaxLength(50)]
public string OfficeHours { get; set; }
Aktualisieren Sie die Initialisierungsklasse so, dass sie die neue Spalte mit Testdaten absaatt. Öffnen Sie Migrationen\Configuration.cs , und ersetzen Sie den Codeblock, der mit dem folgenden Codeblock beginnt var instructors = new List<Instructor> , der die neue Spalte enthält:
var instructors = new List<Instructor>
{
new Instructor { FirstMidName = "Kim", LastName = "Abercrombie", HireDate = DateTime.Parse("1995-03-11"), BirthDate = DateTime.Parse("1918-08-12"), OfficeHours = "8-9AM, 4-5PM", OfficeAssignment = new OfficeAssignment { Location = "Smith 17" } },
new Instructor { FirstMidName = "Fadi", LastName = "Fakhouri", HireDate = DateTime.Parse("2002-07-06"), BirthDate = DateTime.Parse("1960-03-15"), OfficeAssignment = new OfficeAssignment { Location = "Gowan 27" } },
new Instructor { FirstMidName = "Roger", LastName = "Harui", HireDate = DateTime.Parse("1998-07-01"), BirthDate = DateTime.Parse("1970-01-11"), OfficeHours = "6AM-6PM", OfficeAssignment = new OfficeAssignment { Location = "Thompson 304" } },
new Instructor { FirstMidName = "Candace", LastName = "Kapoor", HireDate = DateTime.Parse("2001-01-15"), BirthDate = DateTime.Parse("1975-04-11") },
new Instructor { FirstMidName = "Roger", LastName = "Zheng", HireDate = DateTime.Parse("2004-02-12"), BirthDate = DateTime.Parse("1957-10-12"), OfficeHours = "By appointment only" }
};
Öffnen Sie im Projekt ContosoUniversity Instructors.aspx und fügen Sie direkt vor dem schließenden </Columns>-Tag im ersten GridView-Steuerelement ein neues Vorlagenfeld für Sprechzeiten hinzu:
<asp:TemplateField HeaderText="Office Hours">
<ItemTemplate>
<asp:Label ID="InstructorOfficeHoursLabel" runat="server" Text='<%# Eval("OfficeHours") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="InstructorOfficeHoursTextBox" runat="server" Text='<%# Bind("OfficeHours") %>'
Width="14em"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
Erstellen Sie die Lösung.
Öffnen Sie das Konsolenfenster des Paket-Managers , und wählen Sie "ContosoUniversity.DAL" als Standardprojekt aus.
Geben Sie die folgenden Befehle ein:
add-migration AddOfficeHoursColumn
update-database
Führen Sie die Anwendung aus, und wählen Sie die Seite "Kursleiter" aus. Die Seite braucht etwas länger als gewöhnlich zum Laden, da das Entity Framework die Datenbank neu erstellt und mit Testdaten füllt.
Bereitstellen des Datenbankupdates in der Testumgebung
Wenn Sie Code First-Migrationen verwenden, ist die Methode für die Bereitstellung einer Datenbankänderung in SQL Server identisch mit SQL Server Compact. Sie müssen jedoch das Testveröffentlichungsprofil ändern, da es weiterhin für die Migration von SQL Server Compact zu SQL Server eingerichtet ist.
Der erste Schritt besteht darin, die im vorherigen Lernprogramm erstellten Transformationen der Verbindungszeichenfolgen zu entfernen. Diese sind nicht mehr erforderlich, da Sie Verbindungszeichenfolgentransformationen im Veröffentlichungsprofil angeben, wie Sie zuvor die Registerkarte "Sql verpacken/veröffentlichen " für die Migration zu SQL Server konfiguriert haben.
Öffnen Sie die Web.Test.config Datei, und entfernen Sie das connectionStrings Element. Die einzige verbleibende Transformation in der dateiWeb.Test.config ist für den Environment Wert im appSettings Element.
Jetzt können Sie das Veröffentlichungsprofil aktualisieren und in der Testumgebung veröffentlichen.
Öffnen Sie den Assistenten zum Veröffentlichen von Web , und wechseln Sie dann zur Registerkarte "Profil ".
Wählen Sie das Testveröffentlichungsprofil aus.
Wählen Sie die Registerkarte Einstellungen aus.
Klicken Sie auf "Neue Datenbankveröffentlichungsverbesserungen aktivieren".
Geben Sie im Verbindungszeichenfolgenfeld für SchoolContext denselben Wert ein, den Sie in der Web.Test.config Transformationsdatei im vorherigen Lernprogramm verwendet haben:
Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True
Wählen Sie "Code First-Migrationen ausführen" aus (wird beim Starten der Anwendung ausgeführt). (In Ihrer Version von Visual Studio könnte das Kontrollkästchen Code First Migration anwenden beschriftet sein.)
Geben Sie im Verbindungszeichenfolgenfeld für DefaultConnection denselben Wert ein, den Sie in der Web.Test.config Transformationsdatei im vorherigen Lernprogramm verwendet haben:
Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True
Lassen Sie die Aktualisierungsdatenbank deaktiviert.
Klicken Sie auf Veröffentlichen.
Visual Studio stellt die Codeänderungen in der Testumgebung bereit und öffnet den Browser auf der Startseite der Contoso University.
Wählen Sie die Seite "Kursleiter" aus.
Wenn die Anwendung diese Seite ausführt, versucht sie, auf die Datenbank zuzugreifen. Code First Migration überprüft, ob die Datenbank aktuell ist, und findet, dass die neueste Migration noch nicht angewendet wurde. Code First Migration wendet die neueste Migration an, führt die Seed Methode aus, und dann wird die Seite normal ausgeführt. Sie sehen die neue Spalte "Office-Stunden" mit den vordefinierten Daten.
Bereitstellen des Datenbankupdates in der Produktionsumgebung
Sie müssen auch das Veröffentlichungsprofil für die Produktionsumgebung ändern. In diesem Fall entfernen Sie das vorhandene Profil und erstellen ein neues Profil, indem Sie eine aktualisierte PUBLISHSETTINGS-Datei importieren. Die aktualisierte Datei enthält die Verbindungszeichenfolge für die SQL Server-Datenbank bei Cytanium.
Wie Sie bei der Bereitstellung in der Testumgebung gesehen haben, benötigen Sie keine Verbindungszeichenfolgentransformationen mehr in der Web.Production.config Transformationsdatei. Öffnen Sie diese Datei, und entfernen Sie das connectionStrings Element. Die verbleibenden Transformationen gelten für den Environment Wert im appSettings Element und das location Element, das den Zugriff auf Elmah-Fehlerberichte beschränkt.
Bevor Sie ein neues Veröffentlichungsprofil für die Produktion erstellen, laden Sie eine aktualisierte .publishsettings-Datei auf die gleiche Weise herunter, wie Sie zuvor im Lernprogramm „Deploying to the Production Environment“ durchgeführt haben. (Klicken Sie in der Cytanium-Systemsteuerung auf Websites, und klicken Sie dann auf die contosouniversity.com Website. Wählen Sie die Registerkarte "Webveröffentlichung " aus, und klicken Sie dann auf " Veröffentlichungsprofil für diese Website herunterladen".) Der Grund dafür ist, die Datenbankverbindungszeichenfolge in der PUBLISHSETTINGS-Datei aufzuheben. Die Verbindungszeichenfolge war beim ersten Herunterladen der Datei nicht verfügbar, da Sie noch SQL Server Compact verwenden und die SQL Server-Datenbank noch nicht bei Cytanium erstellt hatten.
Jetzt können Sie das Veröffentlichungsprofil aktualisieren und in der Produktionsumgebung veröffentlichen.
Öffnen Sie den Assistenten zum Veröffentlichen von Web , und wechseln Sie dann zur Registerkarte "Profil ".
Klicken Sie auf "Profile verwalten", und löschen Sie dann das Produktionsprofil.
Schließen Sie den Assistenten zum Veröffentlichen von Web , um diese Änderung zu speichern.
Öffnen Sie den Assistenten zum Veröffentlichen des Webs erneut, und klicken Sie dann auf "Importieren".
Ändern Sie auf der Registerkarte "Verbindung " die Ziel-URL in den entsprechenden Wert, wenn Sie eine temporäre URL verwenden.
Klicke auf Weiter.
Klicken Sie auf der Registerkarte Einstellungen auf neue Verbesserungen bei der Datenbankveröffentlichung aktivieren.
Wählen Sie in der Dropdownliste der Verbindungszeichenfolge für SchoolContext die Cytanium-Verbindungszeichenfolge aus.
Wählen Sie "Code First-Migrationen ausführen" aus (wird beim Starten der Anwendung ausgeführt).
Wählen Sie in der Dropdownliste der Verbindungszeichenfolge für DefaultConnection die Cytanium-Verbindungszeichenfolge aus.
Wählen Sie die Registerkarte "Profil " aus, klicken Sie auf " Profile verwalten", und benennen Sie das Profil in "contosouniversity.com - Web Deploy" in "Production" um.
Schließen Sie das Veröffentlichungsprofil, um die Änderung zu speichern, und öffnen Sie es erneut.
Klicken Sie auf Veröffentlichen. (Bei einer echten Produktionswebsite würden Sie app_offline.htm in die Produktion kopieren und vor der Veröffentlichung in Ihren Projektordner einfügen und dann nach Abschluss der Bereitstellung entfernen.)
Visual Studio stellt die Codeänderungen in der Testumgebung bereit und öffnet den Browser auf der Startseite der Contoso University.
Wählen Sie die Seite "Kursleiter" aus.
Code First Migration aktualisiert die Datenbank auf die gleiche Weise wie in der Testumgebung. Sie sehen die neue Spalte "Office-Stunden" mit den vordefinierten Daten.
Sie haben nun erfolgreich ein Anwendungsupdate bereitgestellt, das eine Datenbankänderung mit einer SQL Server-Datenbank enthält.
Weitere Informationen
Dies schließt diese Reihe von Lernprogrammen zum Bereitstellen einer ASP.NET Webanwendung auf einem Drittanbieterhostinganbieter ab. Weitere Informationen zu den in diesen Lernprogrammen behandelten Themen finden Sie in der ASP.NET Bereitstellungsinhaltszuordnung auf der MSDN-Website.
Danksagung
Ich danke den folgenden Personen, die bedeutende Beiträge zu den Inhalten dieser Lernprogrammreihe geleistet haben:
- Alberto Poblacion, MVP & MCT, Spanien
- Jarod Ferguson, Data Platform Development MVP, Vereinigte Staaten
- Harsh Mittal, Microsoft
- Kristina Olson, Microsoft
- Mike Pope, Microsoft
- Mohit Srivastava, Microsoft
- Raffaele Rialdi, Italien
- Rick Anderson, Microsoft
- Sayed Hashimi, Microsoft(twitter: @sayedihashimi)
- Scott Hanselman (Twitter: @shanselman)
- Scott Hunter, Microsoft (Twitter: @coolcsh)
- Srđan Božović, Serbien
- Vishal Joshi, Microsoft (Twitter: @vishalrjoshi)