Freigeben über


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

Von Tom Dykstra

Startprojekt herunterladen

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 Lernprogramm, das Bereitstellungsfeatures zeigt, die nach der RC-Version von Visual Studio 2012 eingeführt wurden, zeigt, wie Sie andere SQL Server-Editionen als SQL Server Compact bereitstellen und wie Sie in Azure App Service Web Apps bereitstellen, siehe ASP.NET Web Deployment mit Visual Studio.

Übersicht

In diesem Lernprogramm wird gezeigt, wie Sie zwei SQL Server Compact-Datenbanken und das Datenbankmodul 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 einer Livewebsite bereitstellen möchten. Sie können jedoch auch einige Produktionsdaten eingeben, die Sie bereitstellen möchten. In diesem Lernprogramm konfigurieren Sie das Contoso University-Projekt so, dass die erforderliche Software und die richtigen Daten bei der Bereitstellung einbezogen werden.

Erinnerung: Wenn Beim Durchlaufen des Lernprogramms eine Fehlermeldung angezeigt wird oder etwas nicht funktioniert, überprüfen Sie unbedingt die Problembehandlungsseite.

SQL Server Compact im Vergleich zu SQL Server Express

Die Beispielanwendung verwendet SQL Server Compact 4.0. Dieses Datenbankmodul ist eine relativ neue Option für Websites; Frühere Versionen von SQL Server Compact funktionieren nicht in einer Webhostingumgebung. SQL Server Compact bietet einige Vorteile im Vergleich zum häufigeren Szenario der Entwicklung mit SQL Server Express und der Bereitstellung auf vollständigen SQL Server. Je nach gewähltem Hostinganbieter ist SQL Server Compact möglicherweise günstiger bereitzustellen, da einige Anbieter zusätzliche Gebühren für die Unterstützung einer vollständigen SQL Server-Datenbank berechnen. Für SQL Server Compact fallen keine zusätzlichen Kosten an, da Sie das Datenbankmodul selbst als Teil Ihrer Webanwendung bereitstellen können.

Sie sollten sich jedoch auch dessen Einschränkungen bewusst sein. SQL Server Compact unterstützt keine gespeicherten Prozeduren, Trigger, Ansichten 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. Sie können beispielsweise sql Server Management Studio oder SQL Server Data Tools in Visual Studio nicht mit SQL Server Compact-Datenbanken verwenden. Sie haben weitere Optionen zum Arbeiten mit SQL Server Compact-Datenbanken:

  • Sie können den Server-Explorer in Visual Studio verwenden, der eingeschränkte Datenbankmanipulationsfunktionen für SQL Server Compact bietet.
  • Sie können das Datenbankmanipulationsfeature von WebMatrix verwenden, das über mehr Features verfügt 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-Daten- und Schemaskriptprogramm.
  • Sie können eigene DDL-Skripts (Datendefinitionssprache) schreiben und ausführen, um das Datenbankschema zu bearbeiten.

Sie können mit SQL Server Compact beginnen und später ein Upgrade durchführen, sobald sich Ihre Anforderungen weiterentwickeln. In späteren Lernprogrammen 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 erwarten, dass SQL Server in Naher Zukunft benötigt wird, empfiehlt es sich wahrscheinlich, mit SQL Server oder SQL Server Express zu beginnen.

Konfigurieren des SQL Server Compact-Datenbankmoduls für die Bereitstellung

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

Die Links verweisen auf die aktuellen Versionen dieser Pakete, die möglicherweise neuer als das, was im Startprojekt installiert ist, das Sie für dieses Lernprogramm heruntergeladen haben. Stellen Sie für die Bereitstellung für einen Hostinganbieter sicher, dass Sie Entity Framework 5.0 oder höher verwenden. Frühere Versionen von Code First-Migrationen erfordern volle Vertrauenswürdigkeit, und bei vielen Hostinganbietern wird Ihre Anwendung in mittlerer Vertrauensstellung ausgeführt. Weitere Informationen zur mittleren Vertrauensstellung finden Sie im Lernprogramm "Deploying to IIS as a Test Environment ".

Die NuGet-Paketinstallation kümmert sich im Allgemeinen um 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 immer dann ausgeführt werden, wenn Sie die Lösung erstellen. Wenn Sie Unterstützung für diese 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 tut, damit Sie dieselbe Arbeit 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 SqlServerCompact NuGet-Paket fügt Ihrem Projekt ein Postbuildskript hinzu, das die systemeigenen Assemblys in x86 - und amd64-Unterordner unter dem Projektcontainerordner kopiert, aber das Skript schließt diese Ordner nicht in das Projekt ein. 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 andere Option, die Sie in diesen Lernprogrammen nicht verwenden, besteht darin, die Einstellung zu ändern, die dieses Verhalten steuert. Die Einstellung, die Sie ändern können, sind nur Dateien, die zum Ausführen der Anwendung unter "Elemente " auf der Registerkarte " Package/Publish Web " des Fensters "Projekteigenschaften " erforderlich sind. Das Ändern dieser Einstellung wird im Allgemeinen nicht empfohlen, da dies dazu führen kann, dass viele dateien in der Produktionsumgebung bereitgestellt werden, als dort erforderlich sind. Weitere Informationen zu den Alternativen finden Sie im Lernprogramm zum Konfigurieren von Project-Eigenschaften .)

Erstellen Sie das Projekt, und klicken Sie dann im Projektmappen-Explorer auf "Alle Dateien anzeigen ", wenn Sie dies noch nicht getan haben. 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 Project einschließen" aus.

amd64_and_x86_in_Solution_Explorer.png

Die Ordnersymbole ändern sich, um anzuzeigen, dass der Ordner im Projekt enthalten ist.

Solution_Explorer_amd64_included.png

Konfigurieren der ersten Codemigrationen für die Anwendungsdatenbankbereitstellung

Wenn Sie eine Anwendungsdatenbank bereitstellen, stellen Sie ihre Entwicklungsdatenbank in der Regel nicht einfach mit allen darin gespeicherten Daten in der Produktion bereit, da viele der darin enthaltenen Daten wahrscheinlich nur zu Testzwecken vorhanden sind. Beispielsweise sind die Schülernamen in einer Testdatenbank fiktional. Andererseits können Sie häufig nicht einfach nur die Datenbankstruktur ganz ohne jegliche Daten bereitstellen. Einige der Daten in Ihrer Testdatenbank sind möglicherweise echte Daten und müssen vorhanden sein, wenn Benutzer mit der Verwendung der Anwendung beginnen. Ihre Datenbank kann beispielsweise eine Tabelle haben, die gültige Notenwerte oder echte Abteilungsnamen enthält.

Um dieses gängige Szenario zu simulieren, konfigurieren Sie eine Code First Migrations 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, bevor Migrationen veröffentlicht wurden, war es üblich, dass Seed-Methoden auch Testdaten einfügten, da bei einer 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 aufbewahrt, sodass keine Testdaten in der Seed-Methode erforderlich sind. Das Projekt, das Sie heruntergeladen haben, verwendet die prä-Migrationsmethode, alle Daten in die Seed-Methode einer Initialisierungsklasse einzubeziehen. In diesem Lernprogramm deaktivieren Sie die Initialisierungsklasse und aktivieren Migrationen. Anschließend aktualisieren Sie die Seed-Methode in der Migrationskonfigurationsklasse, sodass nur Daten eingefügt werden, die in die Produktion eingefügt werden sollen.

Das folgende Diagramm veranschaulicht das Schema der Anwendungsdatenbank:

SchulDatenbankDiagramm

Bei diesen Tutorials nimmt man an, dass die Tabellen Student leer Enrollment sein sollten, wenn die Website zum ersten Mal bereitgestellt wird. Die anderen Tabellen enthalten Daten, die vorgeladen werden müssen, wenn die Anwendung in Betrieb genommen wird.

Da Sie Code First-Migrationen verwenden, müssen Sie den DropCreateDatabaseIfModelChanges Code First Initializer 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 datei Web.config 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 Initializer-Klasse aus dem appSettings-Element angibt. Das appSettings-Element sieht nun wie folgt aus:

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

Hinweis

Eine weitere Möglichkeit zum Angeben einer Initialisierungsklasse ist dies durch Aufrufen Database.SetInitializer der Methode in der Application_Start Datei "Global.asax ". Wenn Sie Migrationen in einem Projekt aktivieren, das diese Methode verwendet, um den Initialisierer anzugeben, 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 im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ContosoUniversity, und wählen Sie "Als Startprojekt festlegen" aus. Code First Migrations durchsuchen das 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 Paket-Manager-Konsolenfenster "ContosoUniversity.DAL" als Standardprojekt aus, und geben Sie dann an der PM> Eingabeaufforderung "enable-migrations" ein.

enable-migrations_command

Mit diesem Befehl wird eine Configuration.cs Datei 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" im 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 für die Projektmappe nach der Datenbankverbindungszeichenfolge. In der ContosoUniversity-Lösung 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 Configuration.cs Datei, 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 auf List haben rote Wellenlinien darunter, weil Sie noch keine Anweisung für dessen Namespace using haben. Klicken Sie mit der rechten Maustaste auf eine der Instanzen von List, klicken Sie auf Auflösen und klicken Sie dann auf using System.Collections.Generic.

Auflösen mit using-Anweisung

Diese Menüauswahl fügt den using-Anweisungen in der Nähe des oberen Randes der Datei den folgenden Code hinzu.

using System.Collections.Generic;

Hinweis

Das Hinzufügen von Code zur Seed Methode ist eine von vielen Möglichkeiten, feste Daten in die Datenbank einzufügen. Eine Alternative ist das Hinzufügen von Code zu den Up Methoden und Down Migrationsklassen. Die Up Methoden Down enthalten Code, der Datenbankänderungen implementiert. Im Lernprogramm zum Bereitstellen einer Datenbankaktualisierung finden Sie Beispiele dafür.

Sie können auch Code schreiben, der SQL-Anweisungen mithilfe der Sql Methode ausführt. Wenn Sie beispielsweise eine Spalte "Budget" zur Tabelle "Abteilung" hinzufügen und alle Abteilungsbudgets als Teil einer Migration auf 1.000,00 $ initialisieren möchten, könnten Sie der Up Methode für diese Migration die folgende Codezeile hinzufügen:

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

In diesem Beispiel für das Lernprogramm wird die AddOrUpdate-Methode in der Seed-Methode der Code First Migrations-Klasse Configuration verwendet. Code First Migration 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 unter Mit Vorsicht verwenden: EF 4.3 AddOrUpdate-Methode im Blog von Julie Lerman.

Drücken Sie STRG-SHIFT-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, daher müssen Sie die datenbank löschen, die bereits vorhanden ist. SQL Server Compact-Datenbanken sind in SDF-Dateien im ordner App_Data enthalten. Erweitern Sie im Projektmappen-Explorer den Unterordner App_Data im ContosoUniversity-Projekt, 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_Dateien_im_Solution_Explorer

Geben Sie im Paket-Manager-Konsolenfenster den Befehl "Add-Migration Initial" ein, um die erste Migration zu erstellen, und nennen Sie sie "Initial".

add-migration_command

Code First Migration erstellt eine weitere Klassendatei im Migrationsordner , 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 ein Fehler angezeigt wird, der angibt, dass eine Tabelle bereits vorhanden ist und nicht erstellt werden kann, liegt es wahrscheinlich daran, dass Sie die Anwendung nach dem Löschen der Datenbank und vor der Ausführung ausgeführt update-databasehaben. 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 "Kursteilnehmer" leer, aber die Seite "Kursleiter" enthält Kursleiter. Dies ist das, was Sie nach der Bereitstellung der Anwendung in der Produktion erhalten.

Empty_Students_page

Instruktoren_Seite_nach_erster_Migration

Das Projekt kann nun die School-Datenbank bereitstellen.

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. Auf eine der Seiten kann nur für Administratoren zugegriffen werden. 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 Anmeldeseite 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 null anstelle des Buchstabens "o" in "w0rd"). Nachdem Sie sich angemeldet haben, wird die Seite " Guthaben aktualisieren" angezeigt.

Update_Credits_page

Wenn Sie eine Website zum ersten Mal bereitstellen, ist es üblich, die meisten oder alle Benutzerkonten auszuschließen, die Sie zum Testen 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

Die Mitgliedschaftsdatenbank speichert einen Hash von Kontokennwörtern. Um Konten von einem Computer auf einem anderen bereitzustellen, müssen Sie sicherstellen, dass Hashing-Routinen keine anderen Hashes auf dem Zielserver generieren, als auf dem Quellcomputer. Sie generieren dieselben Hashes, wenn Sie die ASP.NET universellen Anbieter verwenden, solange Sie den Standardalgorithmus nicht ändern. Der Standardalgorithmus ist HMACSHA256 und wird im Überprüfungsattribut des machineKey-Elements in der Web.config Datei angegeben.

Die Mitgliedschaftsdatenbank wird nicht von Code First Migrations verwaltet, und es gibt kein automatisches Initialisierungsskript, das die Datenbank mit Testkonten vorbefüllt, wie es bei der School-Datenbank der Fall ist. Damit Testdaten weiterhin zur Verfügung stehen, erstellen Sie eine Kopie der Testdatenbank, bevor Sie eine neue erstellen.

Benennen Sie im 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 gleich eine neue Datenbank.)

Stellen Sie im Projektmappen-Explorer sicher, dass das Webprojekt (ContosoUniversity, nicht ContosoUniversity.DAL) ausgewählt ist. Wählen Sie dann im Menü "Projekt " ASP.NET Konfiguration aus, um das Websiteverwaltungstool (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 "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 Lernprogramm 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 im Projektmappen-Explorer auf die Schaltfläche "Aktualisieren", um die neue Aspnet.sdf-Datei anzuzeigen.

New_aspnet.sdf_in_Solution_Explorer

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

Unterscheidung zwischen Entwicklungs- 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 erforderlich, aber dadurch können Sie daran hindern, Test- und Produktionsversionen der Datenbanken zu verwechseln.

Klicken Sie im 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 die -Prod-Versionen der Datenbankdateien nicht verwenden, sie möchten -Dev-Versionen verwenden. Daher müssen Sie die Verbindungszeichenfolgen in der Web.config Datei so ändern, dass sie auf die -Dev-Versionen der Datenbanken verweisen. (Sie haben keine School-Prod.sdf-Datei erstellt, aber das ist ok, da Code First diese Datenbank in der Produktion erstellt, wenn Sie Ihre App zum ersten Mal dort ausführen.)

Öffnen Sie die Anwendung Web.config Datei, und suchen Sie die 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>

Das SQL Server Compact-Datenbankmodul und beide Datenbanken können jetzt bereitgestellt werden. Im folgenden Lernprogramm 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, sind die Verbindungszeichenfolgen, aber Sie richten diese Änderungen später ein, wenn Sie ein Veröffentlichungsprofil erstellen.)

Weitere Informationen

Weitere Informationen zu NuGet finden Sie unter Verwalten von Projektbibliotheken mit NuGet und NuGet-Dokumentation. Wenn Sie NuGet nicht verwenden möchten, müssen Sie erfahren, wie Sie ein NuGet-Paket analysieren, um zu bestimmen, was es tut, wenn es installiert ist. (Es kann z. B. Web.config Transformationen konfigurieren, PowerShell-Skripts für die Ausführung zur Erstellungszeit konfigurieren usw.) Weitere Informationen zur Funktionsweise von NuGet finden Sie insbesondere beim Erstellen und Veröffentlichen von Paket- undKonfigurationsdatei- und Quellcodetransformationen.