Freigeben über


Bereitstellen einer ASP.NET-Webanwendung mit SQL Server Compact mithilfe von Visual Studio oder Visual Web Developer: Bereitstellen eines Datenbankupdates – 9 von 12

von Tom Dykstra

Starter-Projekt herunterladen

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 in Azure App Service Web-Apps wird, finden Sie unter ASP.NET Webbereitstellung mit Visual Studio.

Überblick

In diesem Tutorial nehmen Sie eine Datenbankänderung und zugehörige Codeänderungen vor, testen die Änderungen in Visual Studio und stellen das Update dann sowohl in der Test- als auch in der Produktionsumgebung bereit.

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 fügen Sie der Basisklasse für die Person Entitäten und Instructor eine Spalte zum Student Geburtsdatum hinzu. Anschließend aktualisieren Sie die Seite, auf der Kursleiterdaten angezeigt werden, sodass die neue Spalte angezeigt wird.

Öffnen Sie im Projekt ContosoUniversity.DALPerson.cs , und fügen Sie am Ende der Klasse die Person folgende Eigenschaft hinzu (darauf sollten zwei schließende geschweifte Klammern folgen):

[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
[Display(Name = "Birth Date")]
public DateTime? BirthDate { get; set; }

Aktualisieren Sie als Nächstes die Seed-Methode, sodass sie einen Wert für die neue Spalte bereitstellt. Öffnen Sie Migrations\Configuration.cs , und ersetzen Sie den Codeblock, der mit dem folgenden Codeblock beginnt var instructors = new List<Instructor> , der Informationen zum Geburtsdatum 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"), 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"), 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") }
};

Öffnen Sie im Projekt ContosoUniversity Instructors.aspx , und fügen Sie ein neues Vorlagenfeld hinzu, um das Geburtsdatum anzuzeigen. Fügen Sie es zwischen den Für mietdatum und bürozuweisung hinzu:

<asp:TemplateField HeaderText="Birth Date" SortExpression="BirthDate">
    <ItemTemplate>
        <asp:Label ID="InstructorBirthDateLabel" runat="server" Text='<%# Eval("BirthDate", "{0:d}") %>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox ID="InstructorBirthDateTextBox" runat="server" Text='<%# Bind("BirthDate", "{0:d}") %>'
            Width="7em"></asp:TextBox>
    </EditItemTemplate>
</asp:TemplateField>

(Wenn der Codeeinzug nicht mehr synchronisiert wird, können Sie STRG-K und dann STRG-D drücken, um die Datei automatisch neu zu formatieren.)

Erstellen Sie die Projektmappe, und öffnen Sie dann das Fenster Paket-Manager-Konsole . Stellen Sie sicher, dass ContosoUniversity.DAL weiterhin als Standardprojekt ausgewählt ist.

Wählen Sie im Fenster Paket-Manager-Konsoledie Option ContosoUniversity.DAL als Standardprojekt aus, und geben Sie dann den folgenden Befehl ein:

add-migration AddBirthDate

Wenn dieser Befehl abgeschlossen ist, öffnet Visual Studio die Klassendatei, die die neue DbMigration Klasse definiert, und in der Up -Methode sehen Sie den Code, der die neue Spalte erstellt.

AddBirthDate_migration_code

Erstellen Sie die Projektmappe, und geben Sie dann den folgenden Befehl im Fenster Paket-Manager-Konsole ein (stellen Sie sicher, dass das Projekt ContosoUniversity.DAL weiterhin ausgewählt ist):

update-database

Wenn der Befehl abgeschlossen ist, führen Sie die Anwendung aus, und wählen Sie die Seite Dozenten aus. Wenn die Seite geladen wird, sehen Sie, dass sie über das neue Feld "Geburtsdatum" verfügt.

Instructors_page_with_birth_date

Bereitstellen des Datenbankupdates in der Testumgebung

Wählen Sie in Projektmappen-Explorer das Projekt ContosoUniversity aus.

Wählen Sie auf der Symbolleiste Web One Klicken Sie auf Veröffentlichen das Profil Veröffentlichung testen , und klicken Sie dann auf Web veröffentlichen. (Wenn die Symbolleiste deaktiviert ist, wählen Sie das Projekt ContosoUniversity in Projektmappen-Explorer aus.)

Visual Studio stellt die aktualisierte Anwendung bereit, und der Browser wird mit der Startseite geöffnet. Führen Sie die Seite Dozenten aus, um zu überprüfen, ob das Update erfolgreich bereitgestellt wurde. Wenn die Anwendung versucht, auf die Datenbank für diese Seite zuzugreifen, aktualisiert Code First das Datenbankschema und führt die Seed -Methode aus. Wenn die Seite angezeigt wird, wird die Spalte " Erwartetes Geburtsdatum " mit Datumsangaben angezeigt.

Instructors_page_with_birth_date_Test

Bereitstellen des Datenbankupdates in der Produktionsumgebung

Sie können jetzt in der Produktion bereitstellen. Der einzige Unterschied besteht darin, dass Sie app_offline.htm verwenden, um zu verhindern, dass Benutzer auf die Website zugreifen und somit die Datenbank aktualisieren, während Sie Änderungen bereitstellen. Führen Sie für die Produktionsbereitstellung die folgenden Schritte aus:

  • Laden Sie die app_offline.htm-Datei auf die Produktionswebsite hoch.
  • Wählen Sie in Visual Studio das Produktionsprofil auf der Symbolleiste "Web veröffentlichen" aus, und klicken Sie dann auf Web veröffentlichen.
  • Löschen Sie die app_offline.htm datei von der Produktionswebsite.

Hinweis

Während Ihre Anwendung in der Produktionsumgebung verwendet wird, sollten Sie einen Sicherungsplan implementieren. Das heißt, Sie sollten die Dateien School-Prod.sdf und aspnet-Prod.sdf in regelmäßigen Abständen von der Produktionswebsite an einen sicheren Speicherort kopieren, und Sie sollten mehrere Generationen solcher Sicherungen aufbewahren. Wenn Sie die Datenbank aktualisieren, sollten Sie unmittelbar vor der Änderung eine Sicherungskopie erstellen. Wenn Sie dann einen Fehler machen und ihn erst entdecken, nachdem Sie sie in der Produktion bereitgestellt haben, können Sie die Datenbank weiterhin in dem Zustand wiederherstellen, in dem sie sich befand, bevor sie beschädigt wurde.

Wenn Visual Studio die Homepage-URL im Browser öffnet, wird die app_offline.htm Seite angezeigt. Nachdem Sie die app_offline.htm Datei gelöscht haben, können Sie erneut zu Ihrer Startseite navigieren, um zu überprüfen, ob das Update erfolgreich bereitgestellt wurde.

Instructors_page_with_birth_date_Prod

Sie haben jetzt ein Anwendungsupdate bereitgestellt, das eine Datenbankänderung sowohl für Test als auch für die Produktion enthält. Im nächsten Tutorial erfahren Sie, wie Sie Ihre Datenbank von SQL Server Compact zu SQL Server Express und SQL Server migrieren.