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
Die Contoso University-Beispielwebanwendung veranschaulicht, wie ASP.NET Web Forms-Anwendungen mithilfe von Entity Framework 4.0 und Visual Studio 2010 erstellt werden. Die Beispielanwendung ist eine Website für eine fiktive Contoso University. Sie enthält Funktionen wie die Zulassung von Studenten, die Erstellung von Kursen und Aufgaben von Dozenten.
Das Lernprogramm zeigt Beispiele in C#. Das herunterladbare Beispiel enthält Code in C# und Visual Basic.
Datenbank zuerst
Es gibt drei Möglichkeiten zum Arbeiten mit Daten im Entity Framework: Database First, Model First und Code First. Dieses Tutorial ist für "Database First" gedacht. Informationen zu den Unterschieden zwischen diesen Workflows und Anleitungen zum Auswählen des besten für Ihr Szenarios finden Sie unter Entity Framework Development Workflows.
Webformulare
Diese Lernprogrammreihe verwendet das ASP.NET Web Forms-Modell und geht davon aus, dass Sie wissen, wie Sie mit ASP.NET Web Forms in Visual Studio arbeiten. Falls nicht, lesen Sie "Erste Schritte mit ASP.NET 4.5 Web Forms". Wenn Sie lieber mit dem ASP.NET MVC-Framework arbeiten möchten, lesen Sie die ersten Schritte mit dem Entity Framework mit ASP.NET MVC.
Softwareversionen
Im Lernprogramm gezeigt Funktioniert auch mit Windows 7 Windows 8 Visual Studio 2010 Visual Studio 2010 Express for Web. Das Lernprogramm wurde mit späteren Versionen von Visual Studio nicht getestet. Es gibt viele Unterschiede bei den Menüauswahlen, Dialogfeldern und Vorlagen. .NET 4 .NET 4.5 ist abwärtskompatibel mit .NET 4, das Lernprogramm wurde jedoch nicht mit .NET 4.5 getestet. Entity Framework 4 Das Lernprogramm wurde nicht mit späteren Versionen von Entity Framework getestet. Ab Entity Framework 5 verwendet EF standardmäßig das DbContext APImit EF 4.1 eingeführte Element. Das EntityDataSource-Steuerelement wurde für die Verwendung derObjectContextAPI entwickelt. Informationen zur Verwendung des EntityDataSource-Steuerelements mit derDbContextAPI finden Sie in diesem Blogbeitrag.Fragen
Wenn Sie Fragen haben, die sich nicht direkt auf das Lernprogramm beziehen, können Sie sie im Forum ASP.NET Entity Framework, dem Forum "Entity Framework" und " LINQ to Entities" veröffentlichen oder StackOverflow.com.
Übersicht
Die Anwendung, die Sie in diesen Lernprogrammen erstellen, ist eine einfache Universitätswebsite.
Benutzer können Informationen zu den Studierenden, Kursen und Dozenten abrufen und aktualisieren. Einige der Bildschirme, die Sie erstellen, werden unten angezeigt.
Erstellen der Webanwendung
Um das Lernprogramm zu starten, öffnen Sie Visual Studio, und erstellen Sie dann ein neues ASP.NET Webanwendungsprojekt mithilfe der ASP.NET-Webanwendungsvorlage :
Diese Vorlage erstellt ein Webanwendungsprojekt, das bereits ein Stylesheet und die Masterseiten enthält:
Öffnen Sie die Datei "Site.Master ", und ändern Sie "My ASP.NET Application" in "Contoso University".
<h1>
Contoso University
</h1>
Suchen Sie das benannte NavigationMenu, und ersetzen Sie es durch das folgende Markup, das Menüelemente für die Seiten hinzufügt, die Sie erstellen möchten.
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false"
IncludeStyleBlock="false" Orientation="Horizontal">
<Items>
<asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home" />
<asp:MenuItem NavigateUrl="~/About.aspx" Text="About" />
<asp:MenuItem NavigateUrl="~/Students.aspx" Text="Students">
<asp:MenuItem NavigateUrl="~/StudentsAdd.aspx" Text="Add Students" />
</asp:MenuItem>
<asp:MenuItem NavigateUrl="~/Courses.aspx" Text="Courses">
<asp:MenuItem NavigateUrl="~/CoursesAdd.aspx" Text="Add Courses" />
</asp:MenuItem>
<asp:MenuItem NavigateUrl="~/Instructors.aspx" Text="Instructors">
<asp:MenuItem NavigateUrl="~/InstructorsCourses.aspx" Text="Course Assignments" />
<asp:MenuItem NavigateUrl="~/OfficeAssignments.aspx" Text="Office Assignments" />
</asp:MenuItem>
<asp:MenuItem NavigateUrl="~/Departments.aspx" Text="Departments">
<asp:MenuItem NavigateUrl="~/DepartmentsAdd.aspx" Text="Add Departments" />
</asp:MenuItem>
</Items>
</asp:Menu>
Öffnen Sie die Default.aspx Seite, und ändern Sie das Content steuerelement BodyContent wie folgt:
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>
Welcome to Contoso University!
</h2>
</asp:Content>
Sie haben jetzt eine einfache Startseite mit Links zu den verschiedenen Seiten, die Sie erstellen:
Erstellen der Datenbank
Für diese Lernprogramme verwenden Sie den Entity Framework-Datenmodell-Designer, um das Datenmodell automatisch basierend auf einer vorhandenen Datenbank zu erstellen (häufig als Datenbank-erster Ansatz bezeichnet). Eine Alternative, die in dieser Lernprogrammreihe nicht behandelt wird, besteht darin, das Datenmodell manuell zu erstellen und dann den Designer Skripte generieren zu lassen, die die Datenbank erstellen (der Modell-first-Ansatz).
Für die in diesem Tutorial verwendete Datenbank-First-Methode besteht der nächste Schritt darin, der Website eine Datenbank hinzuzufügen. Die einfachste Möglichkeit besteht darin, zuerst das Projekt herunterzuladen, das mit diesem Lernprogramm zusammenhängt. Klicken Sie dann mit der rechten Maustaste auf den ordner App_Data , wählen Sie "Vorhandenes Element hinzufügen" aus, und wählen Sie die School.mdf Datenbankdatei aus dem heruntergeladenen Projekt aus.
Eine Alternative besteht darin, die Anweisungen beim Erstellen der Schulbeispieldatenbank zu befolgen. Ob Sie die Datenbank herunterladen oder erstellen, kopieren Sie die School.mdf Datei aus dem folgenden Ordner in den App_Data Ordner Ihrer Anwendung:
%PROGRAMFILES%\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA
(An diesem Speicherort der datei .mdf wird davon ausgegangen, dass Sie SQL Server 2008 Express verwenden.)
Wenn Sie die Datenbank aus einem Skript erstellen, führen Sie die folgenden Schritte aus, um ein Datenbankdiagramm zu erstellen:
Erweitern Sie im Server-ExplorerDatenverbindungen, erweitern Sie School.mdf, klicken Sie mit der rechten Maustaste auf Datenbankdiagramme, und wählen Sie "Neues Diagramm hinzufügen" aus.
Wählen Sie alle Tabellen aus, und klicken Sie dann auf "Hinzufügen".
SQL Server erstellt ein Datenbankdiagramm, das Tabellen, Spalten in den Tabellen und Beziehungen zwischen den Tabellen anzeigt. Sie können die Tabellen verschieben, um sie nach Ihren Wünschen zu organisieren.
Speichern Sie das Diagramm als "SchoolDiagram", und schließen Sie es.
Wenn Sie die School.mdf Datei herunterladen, die dieses Lernprogramm enthält, können Sie das Datenbankdiagramm anzeigen, indem Sie imServer-Explorer auf SchoolDiagram doppelklicken.
Das Diagramm sieht ungefähr so aus (die Tabellen befinden sich möglicherweise an unterschiedlichen Stellen von den hier gezeigten Daten):
Erstellen des Entity Framework-Datenmodells
Jetzt können Sie ein Entity Framework-Datenmodell aus dieser Datenbank erstellen. Sie könnten das Datenmodell im Stammordner der Anwendung erstellen, aber für dieses Lernprogramm platzieren Sie es in einem Ordner namens DAL (für Data Access Layer).
Fügen Sie im Projektmappen-Explorer einen Projektordner namens DAL hinzu (stellen Sie sicher, dass er sich unter dem Projekt befindet, nicht unter der Projektmappe).
Klicken Sie mit der rechten Maustaste auf den DAL-Ordner , und wählen Sie dann "Hinzufügen " und " Neues Element" aus. Wählen Sie unter "Installierte Vorlagen" die Option "Daten" aus, wählen Sie die Vorlage "ADO.NET Entitätsdatenmodell " aus, nennen Sie sie SchoolModel.edmx, und klicken Sie dann auf "Hinzufügen".
Dadurch wird der Entitätsdatenmodell-Assistent gestartet. Im ersten Assistentenschritt ist standardmäßig die Option " Aus Datenbank generieren " ausgewählt. Klicke auf Weiter.
Behalten Sie im Schritt " Datenverbindung auswählen " die Standardwerte bei, und klicken Sie auf "Weiter". Die School-Datenbank ist standardmäßig ausgewählt, und die Verbindungseinstellung wird in der dateiWeb.config als SchoolEntities gespeichert.
Wählen Sie im Schritt " Datenbankobjekte auswählen" alle Tabellen mit Ausnahme sysdiagrams (die für das zuvor generierte Diagramm erstellt wurde) aus, und klicken Sie dann auf "Fertig stellen".
Nachdem das Modell erstellt wurde, zeigt Visual Studio Ihnen eine grafische Darstellung der Entity Framework-Objekte (Entitäten), die Ihren Datenbanktabellen entsprechen. (Wie bei dem Datenbankdiagramm unterscheidet sich die Position einzelner Elemente möglicherweise von dem, was Sie in dieser Abbildung sehen. Sie können die Elemente nach Bedarf an die Abbildung ziehen.)
Untersuchen des Entity Framework-Datenmodells
Sie können sehen, dass das Entitätsdiagramm dem Datenbankdiagramm mit einigen Unterschieden sehr ähnlich aussieht. Ein Unterschied besteht darin, dass am Ende jeder Zuordnung Symbole hinzugefügt werden, die den Zuordnungstyp angeben (Tabellenbeziehungen werden als Entitätszuordnungen im Datenmodell bezeichnet):
Eine Eins-zu-Null- oder Eins-Zuordnung wird durch "1" und "0..1" dargestellt.
In diesem Fall kann eine
PersonEntität einerOfficeAssignmentEntität zugeordnet sein oder nicht. EineOfficeAssignmentEntität muss einerPersonEntität zugeordnet sein. Mit anderen Worten, ein Kursleiter darf oder nicht einem Büro zugewiesen werden, und jedes Büro kann nur einem Kursleiter zugewiesen werden.Eine eins-zu-viele Zuordnung wird durch "1" und "*" dargestellt.
In diesem Fall kann eine
PersonEntität über zugeordneteStudentGradeEntitäten verfügen oder nicht. EineStudentGradeEntität muss einerPersonEntität zugeordnet sein.StudentGradeEntitäten stellen tatsächlich registrierte Kurse in dieser Datenbank dar; wenn ein Kursteilnehmer in einem Kurs registriert ist und es noch keine Noten gibt, ist dieGradeEigenschaft NULL. Mit anderen Worten, ein Student ist möglicherweise noch in keinem Kurs eingeschrieben, kann in einem Kurs eingeschrieben sein oder in mehreren Kursen eingeschrieben sein. Jede Klasse in einem registrierten Kurs gilt nur für einen Kursteilnehmer.Eine m:n-Zuordnung wird durch "*" und "*" dargestellt.
In diesem Fall kann eine
Person-Entität zugeordneteCourse-Entitäten haben oder nicht, und das Umgekehrte ist ebenfalls wahr: EineCourse-Entität kann über zugeordnetePerson-Entitäten verfügen oder nicht. Mit anderen Worten, ein Kursleiter kann mehrere Kurse unterrichten, und ein Kurs kann von mehreren Kursleitern unterrichtet werden. (In dieser Datenbank gilt diese Beziehung nur für Kursleiter; sie verknüpft keine Kursteilnehmer mit Kursen. Die Kursteilnehmer sind in der Tabelle "StudentGrades" mit Kursen verknüpft.)
Ein weiterer Unterschied zwischen dem Datenbankdiagramm und dem Datenmodell ist der zusätzliche Abschnitt "Navigationseigenschaften " für jede Entität. Eine Navigationseigenschaft einer Entität verweist auf verwandte Entitäten. Die Courses-Eigenschaft in einer Person-Entität enthält beispielsweise eine Sammlung aller Course-Entitäten, die mit dieser Person-Entität verknüpft sind.
Ein weiterer Unterschied zwischen der Datenbank und dem Datenmodell ist das Fehlen der CourseInstructor Zuordnungstabelle, die in der Datenbank verwendet wird, um die Tabellen Person und Course in einer m:n-Beziehung zu verknüpfen. Mit den Navigationseigenschaften können Sie verwandte Course Entitäten aus der Person Entität und den zugehörigen Person Entitäten aus der Course Entität abrufen, sodass die Zuordnungstabelle im Datenmodell nicht dargestellt werden muss.
Nehmen wir für dieses Lernprogramm an, dass die FirstName Spalte der Person Tabelle tatsächlich sowohl den Vor- als auch den Zweitnamen einer Person enthält. Sie möchten den Namen des Felds ändern, um dies widerzuspiegeln, aber der Datenbankadministrator (DBA) möchte die Datenbank möglicherweise nicht ändern. Sie können den Namen der FirstName Eigenschaft im Datenmodell ändern, während die Datenbankentsprechung unverändert bleibt.
Klicken Sie im Designer mit der rechten Maustaste auf "FirstName " in der Person Entität, und wählen Sie dann "Umbenennen" aus.
Geben Sie den neuen Namen "FirstMidName" ein. Dadurch wird die Art und Weise geändert, wie Sie auf die Spalte im Code verweisen, ohne die Datenbank zu ändern.
Der Modellbrowser bietet eine weitere Möglichkeit, die Datenbankstruktur, die Datenmodellstruktur und die Zuordnung zwischen ihnen anzuzeigen. Klicken Sie zum Anzeigen mit der rechten Maustaste auf einen leeren Bereich im Entitäts-Designer, und klicken Sie dann auf "Modellbrowser".
Im Bereich "Modellbrowser " wird eine Strukturansicht angezeigt. (Möglicherweise wird der Bereich "Modellbrowser" mit dem Projektmappen-Explorer angedockt.) Der SchoolModel-Knoten stellt die Datenmodellstruktur dar, und der SchoolModel.Store-Knoten stellt die Datenbankstruktur dar.
Erweitern Sie SchoolModel.Store , um die Tabellen anzuzeigen, erweitern Sie Tabellen /Ansichten , um Tabellen anzuzeigen, und erweitern Sie dann "Kurs ", um die Spalten in einer Tabelle anzuzeigen.
Erweitern Sie SchoolModel, erweitern Sie Entitätstypen, und erweitern Sie dann den Knoten "Kurs ", um die Entitäten und die Eigenschaften innerhalb der Entitäten anzuzeigen.
Im Designer- oder Modellbrowserbereich können Sie sehen, wie das Entity Framework die Objekte der beiden Modelle verknüpft. Klicken Sie mit der rechten Maustaste auf die Person Entität, und wählen Sie "Tabellenzuordnung" aus.
Dadurch wird das Fenster "Zuordnungsdetails " geöffnet. Beachten Sie, dass in diesem Fenster angezeigt wird, dass die Datenbankspalte FirstName auf FirstMidName abgebildet ist, was Sie im Datenmodell umbenannt haben.
Entity Framework verwendet XML zum Speichern von Informationen über die Datenbank, das Datenmodell und die Zuordnungen zwischen diesen. Die Datei SchoolModel.edmx ist tatsächlich eine XML-Datei, die diese Informationen enthält. Der Designer rendert die Informationen in einem grafischen Format, aber Sie können die Datei auch als XML anzeigen, indem Sie im Projektmappen-Explorer mit der rechten Maustaste auf die edmx-Datei klicken, auf "Öffnen mit" und dann den XML-Editor (Text) auswählen. (Der Datenmodell-Designer und ein XML-Editor sind nur zwei verschiedene Methoden, um dieselbe Datei zu öffnen und zu bearbeiten, daher können Sie den Designer und den XML-Editor nicht gleichzeitig mit derselben Datei geöffnet haben.)
Sie haben jetzt eine Website, eine Datenbank und ein Datenmodell erstellt. In der nächsten exemplarischen Vorgehensweise beginnen Sie mit der Arbeit mit Daten mithilfe des Datenmodells und des ASP.NET-Steuerelements EntityDataSource .