Bereitstellen einer ASP.NET-Webanwendung mit SQL Server Compact mithilfe von Visual Studio oder Visual Web Developer: Bereitstellen eines SQL Server-Datenbankupdates – 11 von 12
von Tom Dykstra
In dieser Reihe von Tutorials 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 Tutorial der Reihe.
Ein Tutorial mit Bereitstellungsfeatures, die nach der RC-Version von Visual Studio 2012 eingeführt wurden, zeigt, wie SQL Server anderen Editionen als SQL Server Compact bereitgestellt werden, und das Bereitstellen auf Windows Azure-Websites zeigt, finden Sie unter ASP.NET Webbereitstellung mit Visual Studio.
Überblick
In diesem Tutorial erfahren Sie, wie Sie ein Datenbankupdate in einer vollständigen SQL Server Datenbank bereitstellen. Da Code First-Migrationen die gesamte Arbeit zum Aktualisieren der Datenbank ausführt, ist der Prozess fast identisch mit dem, was Sie für SQL Server Compact im Tutorial Bereitstellen eines Datenbankupdates getan haben.
Erinnerung: Wenn Sie eine Fehlermeldung erhalten oder etwas nicht funktioniert, während Sie das Tutorial durchlaufen, überprüfen Sie unbedingt die Problembehandlungsseite.
Hinzufügen einer neuen Spalte zu einer Tabelle
In diesem Abschnitt des Tutorials nehmen Sie eine Datenbankänderung und entsprechende Codeänderungen vor und testen sie dann in Visual Studio, um sie in den Test- und Produktionsumgebungen bereitzustellen. Die Änderung umfasst das Hinzufügen einer OfficeHours
Spalte zur Instructor
Entität und das Anzeigen der neuen Informationen auf der Webseite "Instructors ".
Öffnen Sie im Projekt ContosoUniversity.DAL Instructor.cs , und fügen Sie die folgende Eigenschaft zwischen den HireDate
Eigenschaften und Courses
hinzu:
[MaxLength(50)]
public string OfficeHours { get; set; }
Aktualisieren Sie die Initialisiererklasse, sodass sie die neue Spalte mit Testdaten aussaat. Ö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 ein neues Vorlagenfeld für Bürozeiten kurz vor dem schließenden </Columns>
Tag im ersten GridView
Steuerelement 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 Projektmappe.
Öffnen Sie das Fenster Paket-Manager-Konsole , 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 Dozenten aus. Das Laden der Seite dauert etwas länger als üblich, da das Entity Framework die Datenbank neu erstellt und mit Testdaten ausseriert.
Bereitstellen des Datenbankupdates in der Testumgebung
Wenn Sie Code First-Migrationen verwenden, ist die Methode zum Bereitstellen 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 Verbindungszeichenfolge Transformationen zu entfernen, die Sie im vorherigen Tutorial erstellt haben. Diese werden nicht mehr benötigt, da Sie Verbindungszeichenfolge Transformationen im Veröffentlichungsprofil angeben, wie sie es vor der Konfiguration der Registerkarte SQL-Paket/Veröffentlichung für die Migration zu SQL Server getan haben.
Öffnen Sie die Web.Test.config datei, und entfernen Sie das connectionStrings
Element. Die einzige verbleibende Transformation in der Web.Test.config-Datei 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 web veröffentlichen , und wechseln Sie dann zur Registerkarte Profil .
Wählen Sie das Profil Veröffentlichung testen aus.
Wählen Sie die Registerkarte Einstellungen aus.
Klicken Sie auf Neue Datenbankveröffentlichungsverbesserungen aktivieren.
Geben Sie im Feld Verbindungszeichenfolge für SchoolContext denselben Wert ein, den Sie im vorherigen Tutorial in der Web.Test.config Transformationsdatei verwendet haben:
Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True
Wählen Sie Code First-Migrationen ausführen (wird beim Anwendungsstart ausgeführt). (In Ihrer Version von Visual Studio kann das Kontrollkästchen Anwenden Code First-Migrationen.)
Geben Sie im Feld Verbindungszeichenfolge für DefaultConnection denselben Wert ein, den Sie im vorherigen Tutorial in der Web.Test.config Transformationsdatei verwendet haben:
Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True
Lassen Sie update database deaktiviert.
Klicken Sie auf Veröffentlichen.
Visual Studio stellt die Codeänderungen in der Testumgebung bereit und öffnet den Browser für die Startseite der Contoso University.
Wählen Sie die Seite Dozenten aus.
Wenn die Anwendung diese Seite ausführt, versucht sie, auf die Datenbank zuzugreifen. Code First-Migrationen überprüft, ob die Datenbank aktuell ist, und stellt fest, dass die neueste Migration noch nicht angewendet wurde. Code First-Migrationen die neueste Migration anwendet, führt die Seed
-Methode aus, und die Seite wird normal ausgeführt. Die neue Spalte "Bürozeiten" mit den seeded-Daten wird angezeigt.
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 Verbindungszeichenfolge Transformationen 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 einschränkt.
Bevor Sie ein neues Veröffentlichungsprofil für die Produktion erstellen, laden Sie eine aktualisierte PUBLISHSETTINGS-Datei wie zuvor im Tutorial Bereitstellen in der Produktionsumgebung herunter. (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 herunterladen für diese Website.) Der Grund dafür ist, dass Sie die Datenbank-Verbindungszeichenfolge in der Publishsettings-Datei abrufen. Die Verbindungszeichenfolge war beim ersten Herunterladen der Datei nicht verfügbar, da Sie noch SQL Server Compact verwendet haben 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 web veröffentlichen , 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 von Web erneut, und klicken Sie dann auf Importieren.
Ändern Sie auf der Registerkarte Verbindungdie Ziel-URL in den entsprechenden Wert, wenn Sie eine temporäre URL verwenden.
Klicken Sie auf Weiter.
Klicken Sie auf der Registerkarte Einstellungen auf Neue Datenbankveröffentlichungsverbesserungen aktivieren.
Wählen Sie in der Dropdownliste Verbindungszeichenfolge für SchoolContext die Verbindungszeichenfolge Cytanium aus.
Wählen Sie Code First-Migrationen ausführen (wird beim Anwendungsstart ausgeführt) aus.
Wählen Sie in der Dropdownliste Verbindungszeichenfolge für DefaultConnection die Verbindungszeichenfolge Cytanium aus.
Wählen Sie die Registerkarte Profil aus, klicken Sie auf Profile verwalten, und benennen Sie das Profil von "contosouniversity.com - Web Deploy" in "Production" um.
Schließen Sie das Veröffentlichungsprofil, um die Änderung zu speichern, und öffnen Sie es dann erneut.
Klicken Sie auf Veröffentlichen. (Bei einer echten Produktionswebsite kopieren Sie app_offline.htm in die Produktion, legen sie vor der Veröffentlichung in Ihren Projektordner und entfernen sie dann, wenn die Bereitstellung abgeschlossen ist.)
Visual Studio stellt die Codeänderungen in der Testumgebung bereit und öffnet den Browser für die Startseite der Contoso University.
Wählen Sie die Seite Dozenten aus.
Code First-Migrationen aktualisiert die Datenbank genauso wie in der Testumgebung. Die neue Spalte "Bürozeiten" mit den seeded-Daten wird angezeigt.
Sie haben nun erfolgreich ein Anwendungsupdate bereitgestellt, das eine Datenbankänderung enthält, und verwenden eine SQL Server Datenbank.
Weitere Informationen
Damit wird diese Reihe von Tutorials zum Bereitstellen einer ASP.NET Webanwendung für einen Drittanbieter abgeschlossen. Weitere Informationen zu den Themen, die in diesen Tutorials behandelt werden, finden Sie auf der MSDN-Website unter ASP.NET Bereitstellungsinhaltsübersicht .
Danksagung
Ich möchte mich bei den folgenden Personen bedanken, die wichtige Beiträge zum Inhalt dieser Tutorialreihe gemacht haben:
- Alberto Poblacion, MVP & MCT, Spanien
- Jarod Ferguson, Data Platform Development MVP, USA
- Raue 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)