Bereitstellen einer ASP.NET Webanwendung mit SQL Server Compact mithilfe von Visual Studio oder Visual Web Developer: Bereitstellen SQL Server Compact Datenbanken – 2 von 12

von Tom Dykstra

Herunterladen des Starterprojekts

In dieser Reihe von Tutorials erfahren Sie, wie Sie mithilfe von Visual Studio 2012 RC oder Visual Studio Express 2012 RC für Web ein ASP.NET Webanwendungsprojekt bereitstellen (veröffentlichen), das eine SQL Server Compact-Datenbank 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, das bereitstellungsfeatures zeigt, 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 zeigt, wie sie in Azure App Service Web-Apps bereitgestellt werden, finden Sie unter ASP.NET Webbereitstellung mit Visual Studio.

Übersicht

In diesem Tutorial erfahren Sie, wie Sie zwei SQL Server Compact Datenbanken und die Datenbank-Engine für die Bereitstellung einrichten.

Für den Datenbankzugriff benötigt die Contoso University-Anwendung die folgende Software, die mit der Anwendung bereitgestellt werden muss, da sie nicht im .NET Framework enthalten ist:

Die Datenbankstruktur und einige (nicht alle) Daten in den beiden Datenbanken der Anwendung müssen ebenfalls bereitgestellt werden. Beim Entwickeln einer Anwendung geben Sie in der Regel Testdaten in eine Datenbank ein, die Sie nicht auf einem Livestandort bereitstellen möchten. Sie können jedoch auch einige Produktionsdaten eingeben, die Sie bereitstellen möchten. In diesem Tutorial konfigurieren Sie das Contoso University-Projekt so, dass die erforderliche Software und die richtigen Daten bei der Bereitstellung enthalten sind.

Erinnerung: Wenn Sie eine Fehlermeldung erhalten oder etwas nicht funktioniert, während Sie das Tutorial durchlaufen, überprüfen Sie unbedingt die Seite zur Problembehandlung.

SQL Server Compact im Vergleich zu SQL Server Express

Die Beispielanwendung verwendet SQL Server Compact 4.0. Diese Datenbank-Engine ist eine relativ neue Option für Websites. Frühere Versionen von SQL Server Compact funktionieren in einer Webhostingumgebung nicht. SQL Server Compact bietet einige Vorteile im Vergleich zu dem häufigeren Szenario der Entwicklung mit SQL Server Express und der Bereitstellung für vollständige SQL Server. Abhängig vom ausgewählten Hostinganbieter ist die Bereitstellung SQL Server Compact möglicherweise günstiger, da einige Anbieter zusätzliche Kosten für die Unterstützung einer vollständigen SQL Server-Datenbank berechnen. Es fallen keine zusätzlichen Kosten für SQL Server Compact an, da Sie die Datenbank-Engine selbst als Teil Ihrer Webanwendung bereitstellen können.

Sie sollten sich jedoch auch deren Einschränkungen bewusst sein. SQL Server Compact unterstützt keine gespeicherten Prozeduren, Trigger, Sichten oder Replikationen. (Eine vollständige Liste der SQL Server Features, die von SQL Server Compact nicht unterstützt werden, finden Sie unter Unterschiede zwischen SQL Server Compact und SQL Server.) Außerdem funktionieren einige der Tools, mit denen Sie Schemas und Daten in SQL Server Express und SQL Server Datenbanken bearbeiten können, nicht mit SQL Server Compact. Beispielsweise können Sie SQL Server Management Studio oder SQL Server Data Tools in Visual Studio nicht mit SQL Server Compact Datenbanken verwenden. Sie haben weitere Möglichkeiten zum Arbeiten mit SQL Server Compact Datenbanken:

  • Sie können server Explorer in Visual Studio verwenden, das eingeschränkte Datenbankbearbeitungsfunktionen für SQL Server Compact bietet.
  • Sie können die Datenbankbearbeitungsfunktion von WebMatrix verwenden, die mehr Funktionen als Server Explorer.
  • Sie können relativ voll funktionsfähige Drittanbieter- oder Open Source-Tools verwenden, z. B. die SQL Server Compact Toolbox und das Sql Compact-Hilfsprogramm für Daten- und Schemaskripts.
  • Sie können eigene DDL-Skripts (Data Definition Language) schreiben und ausführen, um das Datenbankschema zu bearbeiten.

Sie können mit SQL Server Compact beginnen und dann später aktualisieren, wenn Sich Ihre Anforderungen weiterentwickeln. In späteren Tutorials dieser Reihe erfahren Sie, wie Sie von SQL Server Compact zu SQL Server Express und zu SQL Server migrieren. Wenn Sie jedoch eine neue Anwendung erstellen und davon ausgehen, dass sie in naher Zukunft SQL Server benötigen, ist es wahrscheinlich am besten, mit SQL Server oder SQL Server Express zu beginnen.

Konfigurieren der SQL Server Compact-Datenbank-Engine für die Bereitstellung

Die für den Datenzugriff in der Contoso University-Anwendung erforderliche Software wurde durch Installieren der folgenden NuGet-Pakete hinzugefügt:

Die Links verweisen auf die aktuellen Versionen dieser Pakete, die möglicherweise neuer sind als das, was in dem Startprojekt installiert ist, das Sie für dieses Tutorial heruntergeladen haben. Stellen Sie für die Bereitstellung bei einem Hostinganbieter sicher, dass Sie Entity Framework 5.0 oder höher verwenden. Frühere Versionen von Code First-Migrationen erfordern voll vertrauenswürdig, und bei vielen Hostinganbietern wird Ihre Anwendung in Mittlerer Vertrauensstellung ausgeführt. Weitere Informationen zu Mittlerer Vertrauensstellung finden Sie im Tutorial Bereitstellen in IIS als Testumgebung .

Die NuGet-Paketinstallation übernimmt im Allgemeinen alles, was Sie benötigen, um diese Software mit der Anwendung bereitzustellen. In einigen Fällen umfasst dies Aufgaben wie das Ändern der Web.config-Datei und das Hinzufügen von PowerShell-Skripts, die beim Erstellen der Projektmappe ausgeführt werden. Wenn Sie Unterstützung für eines dieser Features (z. B. SQL Server Compact und Entity Framework) hinzufügen möchten, ohne NuGet zu verwenden, stellen Sie sicher, dass Sie wissen, was die NuGet-Paketinstallation bewirkt, damit Sie die gleichen Aufgaben manuell ausführen können.

Es gibt eine Ausnahme, bei der NuGet sich nicht um alles kümmert, was Sie tun müssen, um eine erfolgreiche Bereitstellung sicherzustellen. Das NuGet-Paket SqlServerCompact fügt Ihrem Projekt ein Postbuildskript hinzu, das die nativen Assemblys in x86 - und amd64-Unterordner unter dem Projektordner bin kopiert, aber das Skript enthält diese Ordner nicht in das Projekt. Daher kopiert Web Deploy sie nicht auf die Zielwebsite, es sei denn, Sie fügen sie manuell in das Projekt ein. (Dieses Verhalten ergibt sich aus der Standardbereitstellungskonfiguration. Eine weitere Option, die Sie in diesen Tutorials nicht verwenden werden, besteht darin, die Einstellung zu ändern, die dieses Verhalten steuert. Die Einstellung, die Sie ändern können, ist Nur Dateien erforderlich, um die Anwendung unterZu bereitstellende Elemente auf der Registerkarte Paket/Web veröffentlichen des Fensters Projekteigenschaften auszuführen. Das Ändern dieser Einstellung wird im Allgemeinen nicht empfohlen, da dies dazu führen kann, dass in der Produktionsumgebung viel mehr Dateien bereitgestellt werden, als dort benötigt werden. Weitere Informationen zu den Alternativen finden Sie im Tutorial Konfigurieren von Projekteigenschaften .)

Erstellen Sie das Projekt, und klicken Sie dann in Projektmappen-Explorer auf Alle Dateien anzeigen, sofern dies noch nicht geschehen ist. Möglicherweise müssen Sie auch auf Aktualisieren klicken.

Solution_Explorer_Show_All_Files

Erweitern Sie den Ordner bin , um die Ordner amd64 und x86 anzuzeigen, und wählen Sie dann diese Ordner aus, klicken Sie mit der rechten Maustaste, und wählen Sie In Projekt einschließen aus.

amd64_and_x86_in_Solution_Explorer.png

Die Ordnersymbole ändern sich, um anzuzeigen, dass der Ordner in das Projekt eingeschlossen wurde.

Solution_Explorer_amd64_included.png

Konfigurieren von Code First-Migrationen für die Anwendungsdatenbankbereitstellung

Wenn Sie eine Anwendungsdatenbank bereitstellen, stellen Sie ihre Entwicklungsdatenbank in der Regel nicht einfach mit allen darin enthaltenen Daten für die Produktion bereit, da ein Großteil der Darin enthaltenen Daten wahrscheinlich nur zu Testzwecken vorhanden ist. Beispielsweise sind die Namen der Kursteilnehmer in einer Testdatenbank fiktiv. Andererseits können Sie häufig nicht nur die Datenbankstruktur ohne Daten bereitstellen. Einige der Daten in Ihrer Testdatenbank können echte Daten sein und müssen vorhanden sein, wenn Benutzer mit der Verwendung der Anwendung beginnen. Ihre Datenbank kann beispielsweise über eine Tabelle verfügen, die gültige Bewertungswerte oder echte Abteilungsnamen enthält.

Um dieses häufige Szenario zu simulieren, konfigurieren Sie eine Code First-Migrationen Seed-Methode, die nur die Daten in die Datenbank einfügt, die in der Produktion vorhanden sein sollen. Diese Seed-Methode fügt keine Testdaten ein, da sie in der Produktion ausgeführt wird, nachdem Code First die Datenbank in der Produktion erstellt hat.

In früheren Versionen von Code First vor der Veröffentlichung von Migrationen war es üblich, dass Seed-Methoden Testdaten einfügen, da bei jeder Modelländerung während der Entwicklung die Datenbank vollständig gelöscht und von Grund auf neu erstellt werden musste. Bei Code First-Migrationen werden Testdaten nach Datenbankänderungen beibehalten, sodass das Einschließen von Testdaten in die Seed-Methode nicht erforderlich ist. Das heruntergeladene Projekt verwendet die Pre-Migrations-Methode, um alle Daten in die Seed-Methode einer Initialisiererklasse zu einschließen. In diesem Tutorial deaktivieren Sie die Initialisiererklasse und aktivieren Migrationen. Anschließend aktualisieren Sie die Seed-Methode in der Migrations-Konfigurationsklasse, sodass sie nur Daten einfügt, die in die Produktion eingefügt werden sollen.

Das folgende Diagramm veranschaulicht das Schema der Anwendungsdatenbank:

School_database_diagram

Für diese Tutorials gehen Sie davon aus, dass die Student Tabellen und Enrollment leer sein sollten, wenn die Website zum ersten Mal bereitgestellt wird. Die anderen Tabellen enthalten Daten, die vorab geladen werden müssen, wenn die Anwendung live geschaltet wird.

Da Sie Code First-Migrationen verwenden, müssen Sie den Code First-Initialisierer DropCreateDatabaseIfModelChanges nicht mehr verwenden. Der Code für diesen Initialisierer befindet sich in der Datei SchoolInitializer.cs im Projekt ContosoUniversity.DAL. Eine Einstellung im appSettings-Element der Web.config-Datei bewirkt, dass dieser Initialisierer ausgeführt wird, wenn die Anwendung zum ersten Mal versucht, auf die Datenbank zuzugreifen:

<appSettings>
  <add key="Environment" value="Dev" />
  <add key="DatabaseInitializerForType ContosoUniversity.DAL.SchoolContext, ContosoUniversity.DAL" value="ContosoUniversity.DAL.SchoolInitializer, ContosoUniversity.DAL" />
</appSettings>

Öffnen Sie die Anwendung Web.config Datei, und entfernen Sie das Element, das die Code First-Initialisiererklasse angibt, aus dem appSettings-Element. Das appSettings-Element sieht jetzt wie folgt aus:

<appSettings>
  <add key="Environment" value="Dev" />
</appSettings>

Hinweis

Eine weitere Möglichkeit zum Angeben einer Initialisiererklasse ist der Aufruf Database.SetInitializer in der Application_Start -Methode in der Datei Global.asax . Wenn Sie Migrationen in einem Projekt aktivieren, das diese Methode zum Angeben des Initialisierers verwendet, entfernen Sie diese Codezeile.

Aktivieren Sie als Nächstes Code First-Migrationen.

Der erste Schritt besteht darin, sicherzustellen, dass das ContosoUniversity-Projekt als Startprojekt festgelegt ist. Klicken Sie Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ContosoUniversity, und wählen Sie Als Startprojekt festlegen aus. Code First-Migrationen suchen im Startprojekt nach der Datenbankverbindungszeichenfolge.

Klicken Sie im Menü Extras auf NuGet-Paket-Manager und dann auf Paket-Manager-Konsole.

Selecting_Package_Manager_Console

Wählen Sie oben im Fenster Paket-Manager-Konsole contosoUniversity.DAL als Standardprojekt aus, und geben Sie dann an der PM> Eingabeaufforderung "enable-migrations" ein.

enable-migrations_command

Mit diesem Befehl wird eine Datei Configuration.cs in einem neuen Migrationsordner im Projekt ContosoUniversity.DAL erstellt.

Migrations_folder_in_Solution_Explorer

Sie haben das DAL-Projekt ausgewählt, da der Befehl "enable-migrations" in dem Projekt ausgeführt werden muss, das die Code First-Kontextklasse enthält. Wenn sich diese Klasse in einem Klassenbibliotheksprojekt befindet, sucht Code First-Migrationen im Startprojekt nach der Datenbankverbindungszeichenfolge für die Projektmappe. In der Projektmappe ContosoUniversity wurde das Webprojekt als Startprojekt festgelegt. (Wenn Sie das Projekt mit der Verbindungszeichenfolge nicht als Startprojekt in Visual Studio festlegen möchten, können Sie das Startprojekt im PowerShell-Befehl angeben. Um die Befehlssyntax für den Befehl enable-migrations anzuzeigen, können Sie den Befehl "get-help enable-migrations" eingeben.)

Öffnen Sie die Datei Configuration.cs, und ersetzen Sie die Kommentare in der Seed -Methode durch den folgenden Code:

var instructors = new List<Instructor>
{   
    new Instructor { FirstMidName = "Kim",     LastName = "Abercrombie", HireDate = DateTime.Parse("1995-03-11"), OfficeAssignment = new OfficeAssignment { Location = "Smith 17" } },
    new Instructor { FirstMidName = "Fadi",    LastName = "Fakhouri",    HireDate = DateTime.Parse("2002-07-06"), OfficeAssignment = new OfficeAssignment { Location = "Gowan 27" } },
    new Instructor { FirstMidName = "Roger",   LastName = "Harui",       HireDate = DateTime.Parse("1998-07-01"), OfficeAssignment = new OfficeAssignment { Location = "Thompson 304" } },
    new Instructor { FirstMidName = "Candace", LastName = "Kapoor",      HireDate = DateTime.Parse("2001-01-15") },
    new Instructor { FirstMidName = "Roger",   LastName = "Zheng",       HireDate = DateTime.Parse("2004-02-12") }
};
instructors.ForEach(s => context.Instructors.AddOrUpdate(i => i.LastName, s));
context.SaveChanges();

var departments = new List<Department>
{
    new Department { Name = "English",     Budget = 350000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 1 },
    new Department { Name = "Mathematics", Budget = 100000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 2 },
    new Department { Name = "Engineering", Budget = 350000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 3 },
    new Department { Name = "Economics",   Budget = 100000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 4 }
};
departments.ForEach(s => context.Departments.AddOrUpdate(d => d.Name, s));
context.SaveChanges();

var courses = new List<Course>
{
    new Course { CourseID = 1050, Title = "Chemistry",      Credits = 3, DepartmentID = 3, Instructors = new List<Instructor>() },
    new Course { CourseID = 4022, Title = "Microeconomics", Credits = 3, DepartmentID = 4, Instructors = new List<Instructor>() },
    new Course { CourseID = 4041, Title = "Macroeconomics", Credits = 3, DepartmentID = 4, Instructors = new List<Instructor>() },
    new Course { CourseID = 1045, Title = "Calculus",       Credits = 4, DepartmentID = 2, Instructors = new List<Instructor>() },
    new Course { CourseID = 3141, Title = "Trigonometry",   Credits = 4, DepartmentID = 2, Instructors = new List<Instructor>() },
    new Course { CourseID = 2021, Title = "Composition",    Credits = 3, DepartmentID = 1, Instructors = new List<Instructor>() },
    new Course { CourseID = 2042, Title = "Literature",     Credits = 4, DepartmentID = 1, Instructors = new List<Instructor>() }
};
courses.ForEach(s => context.Courses.AddOrUpdate(s));
context.SaveChanges();

courses[0].Instructors.Add(instructors[0]);
courses[0].Instructors.Add(instructors[1]);
courses[1].Instructors.Add(instructors[2]);
courses[2].Instructors.Add(instructors[2]);
courses[3].Instructors.Add(instructors[3]);
courses[4].Instructors.Add(instructors[3]);
courses[5].Instructors.Add(instructors[3]);
courses[6].Instructors.Add(instructors[3]);
context.SaveChanges();

Die Verweise enthalten List rote Wellenlinien darunter, da Sie noch keine -Anweisung für den Namespace haben using . Klicken Sie mit der rechten Maustaste auf eine der Instanzen von List , klicken Sie auf Auflösen, und klicken Sie dann auf System.Collections.Generic verwenden.

Auflösen mit using-Anweisung

Diese Menüauswahl fügt den Anweisungen am Anfang der Datei den folgenden Code hinzu using .

using System.Collections.Generic;

Hinweis

Das Hinzufügen von Code zur Seed -Methode ist eine von vielen Möglichkeiten, wie Sie feste Daten in die Datenbank einfügen können. Eine Alternative ist das Hinzufügen von Code zu den Up Methoden und Down jeder Migrationsklasse. Die Up Methoden und Down enthalten Code, der Datenbankänderungen implementiert. Beispiele dafür finden Sie im Tutorial Bereitstellen eines Datenbankupdates .

Sie können auch Code schreiben, der SQL-Anweisungen ausführt, indem Sie die Sql -Methode verwenden. Wenn Sie beispielsweise der Abteilungstabelle eine Spalte Budget hinzufügen und im Rahmen einer Migration alle Abteilungsbudgets auf 1.000,00 US-Dollar initialisieren möchten, können Sie der Methode für diese Migration die Up folgende Codezeile hinzufügen:

Sql("UPDATE Department SET Budget = 1000");

In diesem Beispiel für dieses Tutorial wird die AddOrUpdate -Methode in der Seed -Methode der Code First-Migrationen-Klasse Configuration verwendet. Code First-Migrationen ruft die Seed -Methode nach jeder Migration auf, und diese Methode aktualisiert zeilen, die bereits eingefügt wurden, oder fügt sie ein, wenn sie noch nicht vorhanden sind. Die AddOrUpdate -Methode ist möglicherweise nicht die beste Wahl für Ihr Szenario. Weitere Informationen finden Sie im Blog von Julie Lerman unter Berücksichtigen der EF 4.3 AddOrUpdate-Methode .

Drücken Sie STRG-UMSCHALT-B, um das Projekt zu erstellen.

Der nächste Schritt besteht darin, eine DbMigration Klasse für die erste Migration zu erstellen. Sie möchten, dass diese Migration eine neue Datenbank erstellt, sodass Sie die bereits vorhandene Datenbank löschen müssen. SQL Server Compact Datenbanken sind in SDF-Dateien im Ordner App_Data enthalten. Erweitern Sie in Projektmappen-ExplorerApp_Data im Projekt ContosoUniversity, um die beiden SQL Server Compact Datenbanken anzuzeigen, die durch SDF-Dateien dargestellt werden.

Klicken Sie mit der rechten Maustaste auf die Datei School.sdf , und klicken Sie auf Löschen.

sdf_files_in_Solution_Explorer

Geben Sie im Fenster Paket-Manager-Konsole den Befehl "add-migration Initial" ein, um die erste Migration zu erstellen, und nennen Sie sie "Initial".

add-migration_command

Code First-Migrationen erstellt eine weitere Klassendatei im Ordner Migrationen, und diese Klasse enthält Code, der das Datenbankschema erstellt.

Geben Sie in der Paket-Manager-Konsole den Befehl "update-database" ein, um die Datenbank zu erstellen und die Seed-Methode auszuführen.

update-database_command

(Wenn Sie einen Fehler erhalten, der angibt, dass eine Tabelle bereits vorhanden ist und nicht erstellt werden kann, liegt dies wahrscheinlich daran, dass Sie die Anwendung ausgeführt haben, nachdem Sie die Datenbank gelöscht haben und bevor Sie ausgeführt haben update-database. Löschen Sie in diesem Fall die Datei School.sdf erneut, und wiederholen Sie den update-database Befehl.)

Führen Sie die Anwendung aus. Jetzt ist die Seite Schüler leer, aber die Seite Dozenten enthält Dozenten. Dies ist, was Sie in der Produktion erhalten, nachdem Sie die Anwendung bereitgestellt haben.

Empty_Students_page

Instructors_page_after_initial_migration

Das Projekt ist jetzt bereit, die School-Datenbank bereitzustellen.

Erstellen einer Mitgliedschaftsdatenbank für die Bereitstellung

Die Contoso University-Anwendung verwendet das ASP.NET Mitgliedschaftssystem und die Formularauthentifizierung, um Benutzer zu authentifizieren und zu autorisieren. Eine seiner Seiten ist nur für Administratoren zugänglich. Um diese Seite anzuzeigen, führen Sie die Anwendung aus, und wählen Sie im Flyoutmenü unter Kurse die Option Guthaben aktualisieren aus. Die Anwendung zeigt die Seite Anmelden an, da nur Administratoren berechtigt sind, die Seite Guthaben aktualisieren zu verwenden.

Log_in_page

Melden Sie sich als "Administrator" mit dem Kennwort "Pas$w0rd" an (beachten Sie die Zahl 0 anstelle des Buchstabens "o" in "w0rd"). Nach der Anmeldung wird die Seite Guthaben aktualisieren angezeigt.

Update_Credits_page

Wenn Sie einen Standort zum ersten Mal bereitstellen, ist es üblich, die meisten oder alle Benutzerkonten auszuschließen, die Sie zu Testzwecken erstellen. In diesem Fall stellen Sie ein Administratorkonto und keine Benutzerkonten bereit. Anstatt Testkonten manuell zu löschen, erstellen Sie eine neue Mitgliedschaftsdatenbank, die nur über das einzige Administratorbenutzerkonto verfügt, das Sie in der Produktion benötigen.

Hinweis

In der Mitgliedschaftsdatenbank wird ein Hash von Kontokennwörtern gespeichert. Um Konten von einem Computer auf einen anderen bereitzustellen, müssen Sie sicherstellen, dass Hashingroutinen nicht andere Hashes auf dem Zielserver generieren als auf dem Quellcomputer. Sie generieren die gleichen Hashes, wenn Sie die ASP.NET-Universelle Anbieter verwenden, solange Sie den Standardalgorithmus nicht ändern. Der Standardalgorithmus ist HMACSHA256 und wird im Validierungsattribut des machineKey-Elements in der Web.config-Datei angegeben.

Die Mitgliedschaftsdatenbank wird nicht von Code First-Migrationen verwaltet, und es gibt keinen automatischen Initialisierer, der die Datenbank mit Testkonten auflegt (wie bei der School-Datenbank). Um Testdaten verfügbar zu halten, erstellen Sie daher eine Kopie der Testdatenbank, bevor Sie eine neue erstellen.

Benennen Sie in Projektmappen-Explorer die Datei aspnet.sdf im Ordner App_Data in aspnet-Dev.sdf um. (Erstellen Sie keine Kopie, benennen Sie sie einfach um – Sie erstellen in einem Moment eine neue Datenbank.)

Stellen Sie in Projektmappen-Explorer sicher, dass das Webprojekt (ContosoUniversity, nicht ContosoUniversity.DAL) ausgewählt ist. Wählen Sie dann im Menü Projektdie Option ASP.NET Konfiguration aus, um das Websiteverwaltungstool (WEB Site Administration Tool, WAT) auszuführen.

Wählen Sie die Registerkarte Sicherheit .

WAT_Security_tab

Klicken Sie auf Rollen erstellen oder verwalten , und fügen Sie eine Administratorrolle hinzu.

WAT_Create_New_Role

Navigieren Sie zurück zur Registerkarte Sicherheit , klicken Sie auf Benutzer erstellen, und fügen Sie benutzer "administrator" als Administrator hinzu. Bevor Sie auf der Seite Benutzer erstellen auf die Schaltfläche Benutzer erstellen klicken, stellen Sie sicher, dass Sie das Kontrollkästchen Administrator aktivieren. Das in diesem Tutorial verwendete Kennwort lautet "Pas$w0rd", und Sie können eine beliebige E-Mail-Adresse eingeben.

WAT_Create_User

Schließen Sie den Browser. Klicken Sie in Projektmappen-Explorer auf die Schaltfläche Aktualisieren, um die neue Datei aspnet.sdf anzuzeigen.

New_aspnet.sdf_in_Solution_Explorer

Klicken Sie mit der rechten Maustaste auf aspnet.sdf , und wählen Sie In Projekt einschließen aus.

Unterscheidung zwischen Entwicklung und Produktionsdatenbanken

In diesem Abschnitt benennen Sie die Datenbanken so um, dass die Entwicklungsversionen School-Dev.sdf und aspnet-Dev.sdf und die Produktionsversionen School-Prod.sdf und aspnet-Prod.sdf sind. Dies ist nicht notwendig, aber dies verhindert, dass Test- und Produktionsversionen der Datenbanken verwechselt werden.

Klicken Sie Projektmappen-Explorer auf Aktualisieren, und erweitern Sie den Ordner App_Data, um die zuvor erstellte School-Datenbank anzuzeigen. Klicken Sie mit der rechten Maustaste darauf, und wählen Sie In Projekt einschließen aus.

Including_School.sdf_in_project

Benennen Sie aspnet.sdf in aspnet-Prod.sdf um.

Benennen Sie School.sdf in School-Dev.sdf um.

Wenn Sie die Anwendung in Visual Studio ausführen, möchten Sie nicht die -Prod-Versionen der Datenbankdateien verwenden, Sie möchten -Dev-Versionen verwenden. Daher müssen Sie die Verbindungszeichenfolgen in der Web.config-Datei ändern, sodass sie auf die -Dev-Versionen der Datenbanken verweisen. (Sie haben keine School-Prod.sdf-Datei erstellt, aber das ist in Ordnung, da Code First diese Datenbank in der Produktion erstellt, wenn Sie Ihre App zum ersten Mal dort ausführen.)

Öffnen Sie die Anwendungsdatei Web.config, und suchen Sie nach den Verbindungszeichenfolgen:

<configuration>
  <!-- Settings -->
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|aspnet.sdf" providerName="System.Data.SqlServerCe.4.0" />
    <add name="SchoolContext" connectionString="Data Source=|DataDirectory|School.sdf" providerName="System.Data.SqlServerCe.4.0" />
  </connectionStrings>
  <!-- Settings -->
</configuration>

Ändern Sie "aspnet.sdf" in "aspnet-Dev.sdf", und ändern Sie "School.sdf" in "School-Dev.sdf":

<configuration>
  <!-- Settings -->
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|aspnet-Dev.sdf" providerName="System.Data.SqlServerCe.4.0" />
    <add name="SchoolContext" connectionString="Data Source=|DataDirectory|School-Dev.sdf" providerName="System.Data.SqlServerCe.4.0" />
  </connectionStrings>
  <!-- Settings -->
</configuration>

Die SQL Server Compact-Datenbank-Engine und beide Datenbanken können jetzt bereitgestellt werden. Im folgenden Tutorial richten Sie automatische Web.config Dateitransformationen für Einstellungen ein, die in den Entwicklungs-, Test- und Produktionsumgebungen unterschiedlich sein müssen. (Unter den Einstellungen, die geändert werden müssen, gehören die Verbindungszeichenfolgen, aber Sie richten diese Änderungen später ein, wenn Sie ein Veröffentlichungsprofil erstellen.)

Weitere Informationen

Weitere Informationen zu NuGet finden Sie in der Dokumentation zum Verwalten von Projektbibliotheken mit NuGet und NuGet. Wenn Sie NuGet nicht verwenden möchten, müssen Sie lernen, wie Sie ein NuGet-Paket analysieren, um zu bestimmen, was es bei der Installation tut. (Es kann z. B. Web.config Transformationen konfigurieren, PowerShell-Skripts für die Ausführung zur Buildzeit konfigurieren usw.) Weitere Informationen zur Funktionsweise von NuGet finden Sie unter Erstellen und Veröffentlichen einer Paket- und Konfigurationsdatei sowie Quellcodetransformationen.