Tutorial: Einstieg in Entity Framework 6 Code First mit MVC 5Tutorial: Get Started with Entity Framework 6 Code First using MVC 5

Note

Für eine neue Entwicklung wird empfohlen, ASP.net Core Razor Pages MVC-Controllern und-Sichten zu über ASP.net.For new development, we recommend ASP.NET Core Razor Pages over ASP.NET MVC controllers and views. Eine Reihe von tutorialreihen, die in diesem Beispiel Razor Pages, finden Sie unter Tutorial: Einstieg in die Razor pages in ASP.net Core.For a tutorial series similar to this one using Razor Pages, see Tutorial: Get started with Razor Pages in ASP.NET Core. Das neue Tutorial:The new tutorial:

  • Ist einfacher zu befolgen.Is easier to follow.
  • Bietet mehr bewährte Methoden für Entity Framework Core.Provides more EF Core best practices.
  • Verwendet effizientere Abfragen.Uses more efficient queries.
  • Passt besser zur aktuellen API.Is more current with the latest API.
  • Behandelt mehr Features.Covers more features.
  • Ist die bevorzugte Methode für die Entwicklung neuer Anwendungen.Is the preferred approach for new application development.

In dieser Reihe von Tutorials erfahren Sie, wie Sie eine ASP.NET MVC 5-Anwendung erstellen, die für den Datenzugriff Entity Framework 6 verwendet.In this series of tutorials, you learn how to build an ASP.NET MVC 5 application that uses Entity Framework 6 for data access. In diesem Tutorial wird der Code First Workflow verwendet.This tutorial uses the Code First workflow. Informationen dazu, wie Sie zwischen Code First, Database First und Model First auswählen, finden Sie unter Erstellen eines Modells.For information about how to choose between Code First, Database First, and Model First, see Create a model.

In dieser tutorialreihe wird erläutert, wie Sie die Beispielanwendung "" der Anwendung "" erstellen.This tutorial series explains how to build the Contoso University sample application. Die Beispielanwendung ist eine einfache University-Website.The sample application is a simple university website. Mit diesem Dienst können Sie Informationen zu Studenten, Kurs und Dozenten anzeigen und aktualisieren.With it, you can view and update student, course, and instructor information. Hier sind zwei der Bildschirme, die Sie erstellen:Here are two of the screens you create:

Students_Index_page

Student bearbeiten

In diesem Tutorial führen Sie Folgendes durch:In this tutorial, you:

  • Erstellen einer MVC-Web-AppCreate an MVC web app
  • Einrichten des WebsitestilsSet up the site style
  • Installieren von Entity Framework 6Install Entity Framework 6
  • Erstellen des DatenmodellsCreate the data model
  • Erstellen des DatenbankkontextsCreate the database context
  • Initialisieren Sie die Datenbank mit TestdatenInitialize DB with test data
  • Einrichten von EF 6 für die Verwendung von localdbSet up EF 6 to use LocalDB
  • Erstellen Sie Controller und AnsichtenCreate controller and views
  • Zeigen Sie die Datenbank anView the database

VoraussetzungenPrerequisites

Erstellen einer MVC-Web-AppCreate an MVC web app

  1. Öffnen Sie Visual Studio, und C# erstellen Sie ein Webprojekt mithilfe der Vorlage ASP.NET-Webanwendung (.NET Framework) .Open Visual Studio and create a C# web project using the ASP.NET Web Application (.NET Framework) template. Nennen Sie das Projekt conjeuniversity , und wählen Sie OKaus.Name the project ContosoUniversity and select OK.

    Dialogfeld "Neues Projekt" in Visual Studio

  2. Wählen Sie in der neuen ASP.NET-Webanwendung-conprosouniversitydie Option MVCaus.In New ASP.NET Web Application - ContosoUniversity, select MVC.

    Dialogfeld "neue Web-App" in Visual Studio

    Note

    Standardmäßig ist die Authentifizierungs Option auf keine Authentifizierungfestgelegt.By default, the Authentication option is set to No Authentication. Für dieses Tutorial benötigt die Web-App keine Benutzeranmeldung.For this tutorial, the web app doesn't require users to sign in. Außerdem wird der Zugriff nicht basierend auf der Anmeldung eingeschränkt.Also, it doesn't restrict access based on who's signed in.

  3. Klicken Sie auf OK, um das Projekt zu erstellen.Select OK to create the project.

Einrichten des WebsitestilsSet up the site style

Sie können das Websitemenü, das Layout und die Startseite über einige Änderungen einrichten.A few simple changes will set up the site menu, layout, and home page.

  1. Öffnen Sie views\shared\_Layout. cshtml, und nehmen Sie die folgenden Änderungen vor:Open Views\Shared\_Layout.cshtml, and make the following changes:

    • Ändern Sie jedes Vorkommen von "My ASP.NET Application" und "Application Name" in "Configuration Manager".Change each occurrence of "My ASP.NET Application" and "Application name" to "Contoso University".
    • Fügen Sie Menüeinträge für Schüler und Studenten, Kurse, Dozenten und Abteilungen hinzu, und löschen Sie den Kontakt Eintrag.Add menu entries for Students, Courses, Instructors, and Departments, and delete the Contact entry.

    Die Änderungen werden im folgenden Code Ausschnitt hervorgehoben:The changes are highlighted in the following code snippet:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>@ViewBag.Title - Contoso University</title>
        @Styles.Render("~/Content/css")
        @Scripts.Render("~/bundles/modernizr")
    </head>
    <body>
        <div class="navbar navbar-inverse navbar-fixed-top">
            <div class="navbar-inner">
                <div class="container">
                    <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    @Html.ActionLink("Contoso University", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
                    <div class="nav-collapse collapse">
                        <ul class="nav">
                            <li>@Html.ActionLink("Home", "Index", "Home")</li>
                            <li>@Html.ActionLink("About", "About", "Home")</li>
                            <li>@Html.ActionLink("Students", "Index", "Student")</li>
                            <li>@Html.ActionLink("Courses", "Index", "Course")</li>
                            <li>@Html.ActionLink("Instructors", "Index", "Instructor")</li>
                            <li>@Html.ActionLink("Departments", "Index", "Department")</li>
                        </ul>
                    </div>
                </div>
            </div>
        </div>
    
        <div class="container">
            @RenderBody()
            <hr />
            <footer>
                <p>&copy; @DateTime.Now.Year - Contoso University</p>
            </footer>
        </div>
    
        @Scripts.Render("~/bundles/jquery")
        @Scripts.Render("~/bundles/bootstrap")
        @RenderSection("scripts", required: false)
    </body>
    </html>
    
  2. Ersetzen Sie in views\home\index.cshtmlden Inhalt der Datei durch den folgenden Code, um den Text zu ASP.net und MVC durch Text zu dieser Anwendung zu ersetzen:In Views\Home\Index.cshtml, replace the contents of the file with the following code to replace the text about ASP.NET and MVC with text about this application:

    @{
        ViewBag.Title = "Home Page";
    }
    
    <div class="jumbotron">
        <h1>Contoso University</h1>
    </div>
    <div class="row">
        <div class="col-md-4">
            <h2>Welcome to Contoso University</h2>
            <p>Contoso University is a sample application that
            demonstrates how to use Entity Framework 6 in an 
            ASP.NET MVC 5 web application.</p>
        </div>
        <div class="col-md-4">
            <h2>Build it from scratch</h2>
            <p>You can build the application by following the steps in the tutorial series on the ASP.NET site.</p>
            <p><a class="btn btn-default" href="http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/">See the tutorial &raquo;</a></p>
        </div>
        <div class="col-md-4">
            <h2>Download it</h2>
            <p>You can download the completed project.</p>
            <p><a class="btn btn-default" href="https://webpifeed.blob.core.windows.net/webpifeed/Partners/ASP.NET%20MVC%20Application%20Using%20Entity%20Framework%20Code%20First.zip">Download &raquo;</a></p>
        </div>
    </div>
    
  3. Drücken Sie STRG + F5, um die Website auszuführen.Press Ctrl+F5 to run the web site. Die Startseite wird mit dem Hauptmenü angezeigt.You see the home page with the main menu.

Installieren von Entity Framework 6Install Entity Framework 6

  1. Klicken Sie im Menü Extras auf nuget-Paket-Manager, und wählen Sie dann Paket-Manager- Konsoleaus.From the Tools menu, choose NuGet Package Manager, and then choose Package Manager Console.

  2. Geben Sie im Fenster Paket-Manager-Konsole den folgenden Befehl ein:In the Package Manager Console window, enter the following command:

    Install-Package EntityFramework
    

Bei diesem Schritt handelt es sich um einen der folgenden Schritte, die Sie manuell durchführen können. Dies kann jedoch automatisch durch die ASP.NET MVC-Gerüstbau Funktion durchgeführt worden sein.This step is one of a few steps that this tutorial has you do manually, but that could have been done automatically by the ASP.NET MVC scaffolding feature. Sie führen Sie manuell aus, sodass Sie die erforderlichen Schritte zum Verwenden von Entity Framework (EF) sehen können.You're doing them manually so that you can see the steps required to use Entity Framework (EF). Später verwenden Sie Gerüstbau, um den MVC-Controller und Ansichten zu erstellen.You'll use scaffolding later to create the MVC controller and views. Eine Alternative besteht darin, Gerüstbau das nuget-Paket von EF automatisch zu installieren, die Daten Bank Kontext Klasse zu erstellen und die Verbindungs Zeichenfolge zu erstellen.An alternative is to let scaffolding automatically install the EF NuGet package, create the database context class, and create the connection string. Wenn Sie auf diese Weise arbeiten möchten, müssen Sie lediglich diese Schritte überspringen und den MVC-Controller einrichten, nachdem Sie die Entitäts Klassen erstellt haben.When you're ready to do it that way, all you have to do is skip those steps and scaffold your MVC controller after you create your entity classes.

Erstellen des DatenmodellsCreate the data model

Als nächstes erstellen Sie Entitätsklassen für die Contoso University-Anwendung.Next you'll create entity classes for the Contoso University application. Beginnen Sie mit den folgenden drei Entitäten:You'll start with the following three entities:

Kurs <-> Registrierung <-> StudentCourse <-> Enrollment <-> Student

EntitätenEntities BeziehungRelationship
Kurs zur RegistrierungCourse to Enrollment 1:nOne-to-many
Student zur RegistrierungStudent to Enrollment 1:nOne-to-many

Es besteht eine 1:n-Beziehung zwischen den Entitäten Student und Enrollment. Außerdem besteht eine 1:n-Beziehung zwischen den Entitäten Course und Enrollment.There's a one-to-many relationship between Student and Enrollment entities, and there's a one-to-many relationship between Course and Enrollment entities. Das bedeutet, dass ein Student für beliebig viele Kurse angemeldet sein kann und sich für jeden Kurs eine beliebige Anzahl von Studenten anmelden kann.In other words, a student can be enrolled in any number of courses, and a course can have any number of students enrolled in it.

In den folgenden Abschnitten erstellen Sie eine Klasse für jede dieser Entitäten.In the following sections, you'll create a class for each one of these entities.

Note

Wenn Sie versuchen, das Projekt zu kompilieren, bevor Sie alle diese Entitäts Klassen erstellt haben, erhalten Sie Compilerfehler.If you try to compile the project before you finish creating all of these entity classes, you'll get compiler errors.

Die Entität „Student“The Student entity

  • Erstellen Sie im Ordner Models eine Klassendatei mit dem Namen Student.cs , indem Sie in Projektmappen-Explorer mit der rechten Maustaste auf den Ordner klicken und > Klasse Hinzufügen auswählen.In the Models folder, create a class file named Student.cs by right-clicking on the folder in Solution Explorer and choosing Add > Class. Ersetzen Sie den Vorlagencode durch den folgenden Code:Replace the template code with the following code:

    using System;
    using System.Collections.Generic;
    
    namespace ContosoUniversity.Models
    {
        public class Student
        {
            public int ID { get; set; }
            public string LastName { get; set; }
            public string FirstMidName { get; set; }
            public DateTime EnrollmentDate { get; set; }
            
            public virtual ICollection<Enrollment> Enrollments { get; set; }
        }
    }
    

Die ID-Eigenschaft fungiert als Primärschlüsselspalte der Datenbanktabelle, die dieser Klasse entspricht.The ID property will become the primary key column of the database table that corresponds to this class. Standardmäßig interpretiert Entity Framework eine Eigenschaft mit dem Namen ID oder className ID als Primärschlüssel.By default, Entity Framework interprets a property that's named ID or classname ID as the primary key.

Die Enrollments-Eigenschaft ist eine Navigationseigenschaft.The Enrollments property is a navigation property. Navigationseigenschaften enthalten andere Entitäten, die dieser Entität zugehörig sind.Navigation properties hold other entities that are related to this entity. In diesem Fall enthält die Enrollments-Eigenschaft einer Student-Entität alle Enrollment-Entitäten, die mit dieser Student Entität verknüpft sind.In this case, the Enrollments property of a Student entity will hold all of the Enrollment entities that are related to that Student entity. Anders ausgedrückt: Wenn eine angegebene Student Zeile in der Datenbank über zwei verknüpfte Enrollment Zeilen verfügt (Zeilen, die den Primärschlüssel Wert dieses Schülers in der StudentID Fremdschlüssel Spalte enthalten), enthält die Enrollments Navigations Eigenschaft der Student Entität diese beiden Enrollment Entitäten.In other words, if a given Student row in the database has two related Enrollment rows (rows that contain that student's primary key value in their StudentID foreign key column), that Student entity's Enrollments navigation property will contain those two Enrollment entities.

Navigations Eigenschaften werden in der Regel als virtual definiert, damit Sie von bestimmten Entity Framework Funktionen wie Lazy Loadingprofitieren können.Navigation properties are typically defined as virtual so that they can take advantage of certain Entity Framework functionality such as lazy loading. (Lazy Load wird später im Lernprogramm zum Lesen verwandter Daten weiter unten in dieser Reihe erläutert.)(Lazy loading will be explained later, in the Reading Related Data tutorial later in this series.)

Wenn eine Navigationseigenschaft mehrere Entitäten enthalten kann (wie bei m:n- oder 1:n-Beziehungen), muss dessen Typ aus einer Liste bestehen, in der Einträge hinzugefügt, gelöscht und aktualisiert werden können – z.B.: ICollection.If a navigation property can hold multiple entities (as in many-to-many or one-to-many relationships), its type must be a list in which entries can be added, deleted, and updated, such as ICollection.

Die Entität „Enrollment“The Enrollment entity

  • Erstellen Sie im Ordner Models (Modelle) die Datei Enrollment.cs, und ersetzen Sie den vorhandenen Code durch folgenden Code:In the Models folder, create Enrollment.cs and replace the existing code with the following code:

    namespace ContosoUniversity.Models
    {
        public enum Grade
        {
            A, B, C, D, F
        }
    
        public class Enrollment
        {
            public int EnrollmentID { get; set; }
            public int CourseID { get; set; }
            public int StudentID { get; set; }
            public Grade? Grade { get; set; }
            
            public virtual Course Course { get; set; }
            public virtual Student Student { get; set; }
        }
    }
    

Die EnrollmentID-Eigenschaft ist der Primärschlüssel. diese Entität verwendet das className -ID Muster anstelle ID, wie Sie es in der Student-Entität gesehen haben.The EnrollmentID property will be the primary key; this entity uses the classname ID pattern instead of ID by itself as you saw in the Student entity. Normalerweise würden Sie nur ein Muster auswählen und dieses für das gesamte Datenmodell verwenden.Ordinarily you would choose one pattern and use it throughout your data model. Diese Variation soll verdeutlichen, dass Sie ein beliebiges Muster erstellen können.Here, the variation illustrates that you can use either pattern. In einem späteren Tutorial erfahren Sie, wie Sie mit ID ohne classname die Vererbung im Datenmodell leichter implementieren können.In a later tutorial, you'll see how using ID without classname makes it easier to implement inheritance in the data model.

Die Grade-Eigenschaft ist eine Enumeration.The Grade property is an enum. Das Fragezeichen nach der Grade-Typdeklaration gibt an, dass die Grade-Eigenschaft NULL-Werte zulässt.The question mark after the Grade type declaration indicates that the Grade property is nullable. Ein Grade, der NULL ist, unterscheidet sich von 0 (null) – NULL bedeutet, dass eine Klasse noch nicht bekannt ist oder noch nicht zugewiesen wurde.A grade that's null is different from a zero grade — null means a grade isn't known or hasn't been assigned yet.

Bei der StudentID-Eigenschaft handelt es sich um einen Fremdschlüssel, und die zugehörige Navigationseigenschaft lautet Student.The StudentID property is a foreign key, and the corresponding navigation property is Student. Eine Enrollment-Entität wird einer Student-Entität zugeordnet, damit die Eigenschaft nur eine Student-Entität enthalten kann. Dies steht im Gegensatz zu der bereits erläuterten Student.Enrollments-Navigationseigenschaft, die mehrere Enrollment-Entitäten enthalten kann.An Enrollment entity is associated with one Student entity, so the property can only hold a single Student entity (unlike the Student.Enrollments navigation property you saw earlier, which can hold multiple Enrollment entities).

Bei der CourseID-Eigenschaft handelt es sich um einen Fremdschlüssel, und die zugehörige Navigationseigenschaft lautet Course.The CourseID property is a foreign key, and the corresponding navigation property is Course. Die Enrollment-Entität wird einer Course-Entität zugeordnet.An Enrollment entity is associated with one Course entity.

Entity Framework interpretiert eine Eigenschaft als Fremdschlüssel Eigenschaft, wenn Sie <Navigations Eigenschaftsnamen><Name der Primärschlüssel Eigenschaft>hat (z. b. StudentID für die Navigations Eigenschaft Student, da der Primärschlüssel der Student-Entität IDist).Entity Framework interprets a property as a foreign key property if it's named <navigation property name><primary key property name> (for example, StudentID for the Student navigation property since the Student entity's primary key is ID). Fremdschlüssel Eigenschaften können auch einfach <Namen der Primärschlüssel Eigenschaft> benannt werden (z. b. CourseID, weil der Primärschlüssel der Course Entität CourseIDist).Foreign key properties can also be named the same simply <primary key property name> (for example, CourseID since the Course entity's primary key is CourseID).

Die Entität „Course“The Course entity

  • Erstellen Sie im Ordner Models Course.cs, und ersetzen Sie den Vorlagen Code durch den folgenden Code:In the Models folder, create Course.cs, replacing the template code with the following code:

    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations.Schema;
    
    namespace ContosoUniversity.Models
    {
        public class Course
        {
            [DatabaseGenerated(DatabaseGeneratedOption.None)]
            public int CourseID { get; set; }
            public string Title { get; set; }
            public int Credits { get; set; }
            
            public virtual ICollection<Enrollment> Enrollments { get; set; }
        }
    }
    

Die Enrollments-Eigenschaft ist eine Navigationseigenschaft.The Enrollments property is a navigation property. Course-Entitäten können sich auf jede beliebige Anzahl von Enrollment-Entitäten beziehen.A Course entity can be related to any number of Enrollment entities.

In einem späteren Tutorial dieser Reihe werden weitere Informationen zum DatabaseGeneratedAttribute-Attribut angezeigt.We'll say more about the DatabaseGeneratedAttribute attribute in a later tutorial in this series. Im Grunde können Sie über dieses Attribut den Primärschlüssel für den Kurs angeben, anstatt ihn von der Datenbank generieren zu lassen.Basically, this attribute lets you enter the primary key for the course rather than having the database generate it.

Erstellen des DatenbankkontextsCreate the database context

Die Hauptklasse, die Entity Framework Funktionen für ein bestimmtes Datenmodell koordiniert, ist die Daten Bank Kontext Klasse.The main class that coordinates Entity Framework functionality for a given data model is the database context class. Sie erstellen diese Klasse durch Ableiten von der System. Data. Entity. dbcontext -Klasse.You create this class by deriving from the System.Data.Entity.DbContext class. Im Code geben Sie an, welche Entitäten im Datenmodell enthalten sind.In your code, you specify which entities are included in the data model. Außerdem können Sie bestimmte Entity Framework-Verhalten anpassen.You can also customize certain Entity Framework behavior. In diesem Projekt heißt die Klasse SchoolContext.In this project, the class is named SchoolContext.

  • Zum Erstellen eines Ordners im Projekt conjesouniversity klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, klicken Sie auf Hinzufügen, und klicken Sie dann auf neuer Ordner.To create a folder in the ContosoUniversity project, right-click the project in Solution Explorer and click Add, and then click New Folder. Benennen Sie den neuen Ordner dal (für Datenzugriffs Ebene).Name the new folder DAL (for Data Access Layer). Erstellen Sie in diesem Ordner eine neue Klassendatei mit dem Namen SchoolContext.cs, und ersetzen Sie den Vorlagen Code durch den folgenden Code:In that folder, create a new class file named SchoolContext.cs, and replace the template code with the following code:

    using ContosoUniversity.Models;
    using System.Data.Entity;
    using System.Data.Entity.ModelConfiguration.Conventions;
    
    namespace ContosoUniversity.DAL
    {
        public class SchoolContext : DbContext
        {
        
            public SchoolContext() : base("SchoolContext")
            {
            }
            
            public DbSet<Student> Students { get; set; }
            public DbSet<Enrollment> Enrollments { get; set; }
            public DbSet<Course> Courses { get; set; }
    
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
            }
        }
    }
    

Entitätenmengen angebenSpecify entity sets

Mit diesem Code wird eine dbset -Eigenschaft für jede Entitätenmenge erstellt.This code creates a DbSet property for each entity set. In Entity Framework-Terminologie entspricht eine Entitätenmenge in der Regel einer Datenbanktabelle, und eine Entität entspricht einer Zeile in der Tabelle.In Entity Framework terminology, an entity set typically corresponds to a database table, and an entity corresponds to a row in the table.

Note

Sie können die Anweisungen DbSet<Enrollment> und DbSet<Course> weglassen und funktionieren gleich.You can omit the DbSet<Enrollment> and DbSet<Course> statements and it would work the same. Entity Framework würden Sie implizit einschließen, da die Entität Student auf die Enrollment Entität verweist und die Enrollment Entität auf die Course Entität verweist.Entity Framework would include them implicitly because the Student entity references the Enrollment entity and the Enrollment entity references the Course entity.

Angeben der Verbindungs ZeichenfolgeSpecify the connection string

Der Name der Verbindungs Zeichenfolge (die Sie später der Datei "Web. config" hinzufügen) wird an den-Konstruktor übergeben.The name of the connection string (which you'll add to the Web.config file later) is passed in to the constructor.

public SchoolContext() : base("SchoolContext")
{
}

Sie können auch die Verbindungs Zeichenfolge selbst übergeben, anstelle des Namens eines in der Datei Web. config gespeicherten namens.You could also pass in the connection string itself instead of the name of one that is stored in the Web.config file. Weitere Informationen zu den Optionen zum Angeben der zu verwendenden Datenbank finden Sie unter Verbindungs Zeichenfolgen und Modelle.For more information about options for specifying the database to use, see Connection strings and models.

Wenn Sie keine Verbindungs Zeichenfolge oder den Namen explizit angeben, wird Entity Framework angenommen, dass der Name der Verbindungs Zeichenfolge mit dem Klassennamen identisch ist.If you don't specify a connection string or the name of one explicitly, Entity Framework assumes that the connection string name is the same as the class name. Der Standardname der Verbindungs Zeichenfolge in diesem Beispiel wäre dann SchoolContext, und zwar genau so, wie Sie dies explizit angeben.The default connection string name in this example would then be SchoolContext, the same as what you're specifying explicitly.

Angeben von Namen für die Singular TabelleSpecify singular table names

Die modelBuilder.Conventions.Remove-Anweisung in der onmodelcreating -Methode verhindert, dass Tabellennamen pluralisiert werden.The modelBuilder.Conventions.Remove statement in the OnModelCreating method prevents table names from being pluralized. Wenn Sie dies nicht getan haben, werden die generierten Tabellen in der Datenbank Students, Coursesund Enrollmentsbenannt.If you didn't do this, the generated tables in the database would be named Students, Courses, and Enrollments. Stattdessen werden die Tabellennamen Student, Courseund Enrollment.Instead, the table names will be Student, Course, and Enrollment. Entwickler sind sich uneinig darüber, ob Tabellennamen im Plural stehen sollten oder nicht.Developers disagree about whether table names should be pluralized or not. In diesem Tutorial wird das Singular-Formular verwendet, aber es ist wichtig, dass Sie das gewünschte Formular auswählen können, indem Sie diese Codezeile einschließen oder weglassen.This tutorial uses the singular form, but the important point is that you can select whichever form you prefer by including or omitting this line of code.

Initialisieren Sie die Datenbank mit TestdatenInitialize DB with test data

Entity Framework können automatisch eine Datenbank erstellen (oder löschen und neu erstellen), wenn die Anwendung ausgeführt wird.Entity Framework can automatically create (or drop and re-create) a database for you when the application runs. Sie können angeben, dass dies jedes Mal erfolgen soll, wenn die Anwendung ausgeführt wird, oder nur, wenn das Modell nicht mit der vorhandenen Datenbank synchronisiert ist.You can specify that this should be done every time your application runs or only when the model is out of sync with the existing database. Sie können auch eine Seed Methode schreiben, die nach dem Erstellen der Datenbank automatisch aufruft Entity Framework, um diese mit Testdaten aufzufüllen.You can also write a Seed method that Entity Framework automatically calls after creating the database in order to populate it with test data.

Das Standardverhalten besteht darin, eine Datenbank nur dann zu erstellen, wenn Sie nicht vorhanden ist (und eine Ausnahme auslöst, wenn sich das Modell geändert hat und die Datenbank bereits vorhanden ist).The default behavior is to create a database only if it doesn't exist (and throw an exception if the model has changed and the database already exists). In diesem Abschnitt geben Sie an, dass die Datenbank immer dann gelöscht und neu erstellt werden soll, wenn das Modell geändert wird.In this section, you'll specify that the database should be dropped and re-created whenever the model changes. Das Löschen der Datenbank führt zum Verlust all Ihrer Daten.Dropping the database causes the loss of all your data. Dies ist im Allgemeinen bei der Entwicklung von Ordnung, da die Seed-Methode bei der erneuten Erstellung der Datenbank ausgeführt wird und die Testdaten neu erstellt.This is generally okay during development, because the Seed method will run when the database is re-created and will re-create your test data. In der Produktionsumgebung möchten Sie jedoch im Allgemeinen nicht alle Ihre Daten verlieren, wenn Sie das Datenbankschema ändern müssen.But in production you generally don't want to lose all your data every time you need to change the database schema. Später erfahren Sie, wie Sie Modelländerungen mithilfe Code First-Migrationen bearbeiten, um das Datenbankschema zu ändern, anstatt die Datenbank zu löschen und neu zu erstellen.Later you'll see how to handle model changes by using Code First Migrations to change the database schema instead of dropping and re-creating the database.

  1. Erstellen Sie im Ordner dal eine neue Klassendatei mit dem Namen SchoolInitializer.cs , und ersetzen Sie den Vorlagen Code durch den folgenden Code, der bewirkt, dass eine Datenbank bei Bedarf erstellt wird und Testdaten in die neue Datenbank geladen werden.In the DAL folder, create a new class file named SchoolInitializer.cs and replace the template code with the following code, which causes a database to be created when needed and loads test data into the new database.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data.Entity;
    using ContosoUniversity.Models;
    
    namespace ContosoUniversity.DAL
    {
        public class SchoolInitializer : System.Data.Entity. DropCreateDatabaseIfModelChanges<SchoolContext>
        {
            protected override void Seed(SchoolContext context)
            {
                var students = new List<Student>
                {
                new Student{FirstMidName="Carson",LastName="Alexander",EnrollmentDate=DateTime.Parse("2005-09-01")},
                new Student{FirstMidName="Meredith",LastName="Alonso",EnrollmentDate=DateTime.Parse("2002-09-01")},
                new Student{FirstMidName="Arturo",LastName="Anand",EnrollmentDate=DateTime.Parse("2003-09-01")},
                new Student{FirstMidName="Gytis",LastName="Barzdukas",EnrollmentDate=DateTime.Parse("2002-09-01")},
                new Student{FirstMidName="Yan",LastName="Li",EnrollmentDate=DateTime.Parse("2002-09-01")},
                new Student{FirstMidName="Peggy",LastName="Justice",EnrollmentDate=DateTime.Parse("2001-09-01")},
                new Student{FirstMidName="Laura",LastName="Norman",EnrollmentDate=DateTime.Parse("2003-09-01")},
                new Student{FirstMidName="Nino",LastName="Olivetto",EnrollmentDate=DateTime.Parse("2005-09-01")}
                };
    
                students.ForEach(s => context.Students.Add(s));
                context.SaveChanges();
                var courses = new List<Course>
                {
                new Course{CourseID=1050,Title="Chemistry",Credits=3,},
                new Course{CourseID=4022,Title="Microeconomics",Credits=3,},
                new Course{CourseID=4041,Title="Macroeconomics",Credits=3,},
                new Course{CourseID=1045,Title="Calculus",Credits=4,},
                new Course{CourseID=3141,Title="Trigonometry",Credits=4,},
                new Course{CourseID=2021,Title="Composition",Credits=3,},
                new Course{CourseID=2042,Title="Literature",Credits=4,}
                };
                courses.ForEach(s => context.Courses.Add(s));
                context.SaveChanges();
                var enrollments = new List<Enrollment>
                {
                new Enrollment{StudentID=1,CourseID=1050,Grade=Grade.A},
                new Enrollment{StudentID=1,CourseID=4022,Grade=Grade.C},
                new Enrollment{StudentID=1,CourseID=4041,Grade=Grade.B},
                new Enrollment{StudentID=2,CourseID=1045,Grade=Grade.B},
                new Enrollment{StudentID=2,CourseID=3141,Grade=Grade.F},
                new Enrollment{StudentID=2,CourseID=2021,Grade=Grade.F},
                new Enrollment{StudentID=3,CourseID=1050},
                new Enrollment{StudentID=4,CourseID=1050,},
                new Enrollment{StudentID=4,CourseID=4022,Grade=Grade.F},
                new Enrollment{StudentID=5,CourseID=4041,Grade=Grade.C},
                new Enrollment{StudentID=6,CourseID=1045},
                new Enrollment{StudentID=7,CourseID=3141,Grade=Grade.A},
                };
                enrollments.ForEach(s => context.Enrollments.Add(s));
                context.SaveChanges();
            }
        }
    }
    

    Die Seed-Methode nimmt das Daten Bank Kontext Objekt als Eingabeparameter an, und der Code in der-Methode verwendet dieses Objekt, um der Datenbank neue Entitäten hinzuzufügen.The Seed method takes the database context object as an input parameter, and the code in the method uses that object to add new entities to the database. Für jeden Entitätstyp erstellt der Code eine Auflistung von neuen Entitäten, fügt Sie der entsprechenden DbSet-Eigenschaft hinzu und speichert die Änderungen dann in der Datenbank.For each entity type, the code creates a collection of new entities, adds them to the appropriate DbSet property, and then saves the changes to the database. Es ist nicht erforderlich, die SaveChanges-Methode nach jeder entitätenentität wie hier beschrieben aufzurufen. Dadurch können Sie jedoch die Ursache eines Problems finden, wenn eine Ausnahme auftritt, während der Code in die Datenbank schreibt.It isn't necessary to call the SaveChanges method after each group of entities, as is done here, but doing that helps you locate the source of a problem if an exception occurs while the code is writing to the database.

  2. Wenn Sie Entity Framework möchten, dass die Initialisiererklasse verwendet werden soll, fügen Sie dem entityFramework-Element in der Web. config -Datei der Anwendung (die im Stamm Projektordner) ein-Element hinzu, wie im folgenden Beispiel gezeigt:To tell Entity Framework to use your initializer class, add an element to the entityFramework element in the application Web.config file (the one in the root project folder), as shown in the following example:

    <entityFramework>
      <contexts>
        <context type="ContosoUniversity.DAL.SchoolContext, ContosoUniversity">
          <databaseInitializer type="ContosoUniversity.DAL.SchoolInitializer, ContosoUniversity" />
        </context>
      </contexts>
      <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
        <parameters>
          <parameter value="v11.0" />
        </parameters>
      </defaultConnectionFactory>
      <providers>
        <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      </providers>
    </entityFramework>
    

    Der context type gibt den voll qualifizierten Kontext Klassennamen und die Assembly an, in der er sich befindet, und die databaseinitializer type gibt den voll qualifizierten Namen der Initialisiererklasse und die Assembly an, in der Sie sich befindet.The context type specifies the fully qualified context class name and the assembly it's in, and the databaseinitializer type specifies the fully qualified name of the initializer class and the assembly it's in. (Wenn Sie nicht möchten, dass EF den Initialisierer verwendet, können Sie ein Attribut für das context Element festlegen: disableDatabaseInitialization="true".) Weitere Informationen finden Sie unter Einstellungen für die Konfigurationsdatei.(When you don't want EF to use the initializer, you can set an attribute on the context element: disableDatabaseInitialization="true".) For more information, see Configuration File Settings.

    Eine Alternative zum Festlegen des Initialisierers in der Datei Web. config besteht darin, den Initialisierer in Code zu verwenden, indem der Application_Start-Methode in der Global.asax.cs -Datei eine Database.SetInitializer-Anweisung hinzugefügt wird.An alternative to setting the initializer in the Web.config file is to do it in code by adding a Database.SetInitializer statement to the Application_Start method in the Global.asax.cs file. Weitere Informationen finden Sie Untergrund Legendes zu datenbankinitialisierern in Entity Framework Code First.For more information, see Understanding Database Initializers in Entity Framework Code First.

Die Anwendung ist nun so eingerichtet, dass beim ersten Zugriff auf die Datenbank in einer bestimmten Anwendungs Anwendung Entity Framework die Datenbank mit dem Modell (ihrer SchoolContext-und Entitäts Klassen) vergleicht.The application is now set up so that when you access the database for the first time in a given run of the application, Entity Framework compares the database to the model (your SchoolContext and entity classes). Wenn es einen Unterschied gibt, löscht die Anwendung die Datenbank und erstellt sie neu.If there's a difference, the application drops and re-creates the database.

Note

Wenn Sie eine Anwendung auf einem produktionsweb Server bereitstellen, müssen Sie Code entfernen oder deaktivieren, der die Datenbank löscht und neu erstellt.When you deploy an application to a production web server, you must remove or disable code that drops and re-creates the database. Dies wird in einem späteren Tutorial dieser Reihe durchführen.You'll do that in a later tutorial in this series.

Einrichten von EF 6 für die Verwendung von localdbSet up EF 6 to use LocalDB

Localdb ist eine vereinfachte Version der SQL Server Express Datenbank-Engine.LocalDB is a lightweight version of the SQL Server Express database engine. Es ist einfach zu installieren und zu konfigurieren, bei Bedarf gestartet und im Benutzermodus ausgeführt.It's easy to install and configure, starts on demand, and runs in user mode. Localdb wird in einem speziellen Ausführungs Modus von SQL Server Express ausgeführt, der es Ihnen ermöglicht, mit Datenbanken als MDF -Dateien zu arbeiten.LocalDB runs in a special execution mode of SQL Server Express that enables you to work with databases as .mdf files. Sie können localdb-Datenbankdateien im App-_Daten Ordner eines Webprojekts ablegen, wenn Sie in der Lage sein möchten, die Datenbank mit dem Projekt zu kopieren.You can put LocalDB database files in the App_Data folder of a web project if you want to be able to copy the database with the project. Mit der benutzerinstanzfunktion in SQL Server Express können Sie auch mit MDF -Dateien arbeiten, aber die benutzerinstanzfunktion ist veraltet. Daher wird localdb zum Arbeiten mit MDF -Dateien empfohlen.The user instance feature in SQL Server Express also enables you to work with .mdf files, but the user instance feature is deprecated; therefore, LocalDB is recommended for working with .mdf files. Localdb wird standardmäßig mit Visual Studio installiert.LocalDB is installed by default with Visual Studio.

In der Regel wird SQL Server Express nicht für produktionsweb Anwendungen verwendet.Typically, SQL Server Express is not used for production web applications. Localdb wird insbesondere für den Einsatz in der Produktion mit einer Webanwendung nicht empfohlen, da es nicht für die Verwendung mit IIS konzipiert ist.LocalDB in particular is not recommended for production use with a web application because it's not designed to work with IIS.

  • In diesem Tutorial arbeiten Sie mit localdb.In this tutorial, you'll work with LocalDB. Öffnen Sie die Datei " Web. config " der Anwendung, und fügen Sie ein connectionStrings Element vor dem appSettings-Element hinzu, wie im folgenden Beispiel gezeigt.Open the application Web.config file and add a connectionStrings element preceding the appSettings element, as shown in the following example. (Stellen Sie sicher, dass Sie die Datei " Web. config " im Stamm Projektordner aktualisieren.(Make sure you update the Web.config file in the root project folder. Es gibt auch eine Web. config -Datei im Unterordner views , die Sie nicht aktualisieren müssen.)There's also a Web.config file in the Views subfolder that you don't need to update.)

    <connectionStrings>
        <add name="SchoolContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=ContosoUniversity1;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
    </connectionStrings>
    <appSettings>
      <add key="webpages:Version" value="3.0.0.0" />
      <add key="webpages:Enabled" value="false" />
      <add key="ClientValidationEnabled" value="true" />
      <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    </appSettings>
    

Die Verbindungs Zeichenfolge, die Sie hinzugefügt haben, gibt an, dass Entity Framework eine localdb-Datenbank namens ContosoUniversity1. mdfverwendet.The connection string you've added specifies that Entity Framework will use a LocalDB database named ContosoUniversity1.mdf. (Die Datenbank ist noch nicht vorhanden, Sie wird jedoch von EF erstellt.) Wenn Sie die Datenbank in Ihrem App-_Daten Ordner erstellen möchten, können Sie der Verbindungs Zeichenfolge AttachDBFilename=|DataDirectory|\ContosoUniversity1.mdf hinzufügen.(The database doesn't exist yet but EF will create it.) If you want to create the database in your App_Data folder, you could add AttachDBFilename=|DataDirectory|\ContosoUniversity1.mdf to the connection string. Weitere Informationen zu Verbindungs Zeichenfolgen finden Sie unter SQL Server Verbindungs Zeichenfolgen für ASP.NET-Webanwendungen.For more information about connection strings, see SQL Server Connection Strings for ASP.NET Web Applications.

Sie benötigen keine Verbindungs Zeichenfolge in der Datei " Web. config ".You don't actually need a connection string in the Web.config file. Wenn Sie keine Verbindungs Zeichenfolge angeben, verwendet Entity Framework eine Standard Verbindungs Zeichenfolge, die auf der Kontext Klasse basiert.If you don't supply a connection string, Entity Framework uses a default connection string based on your context class. Weitere Informationen finden Sie unter Code First zu einer neuen Datenbank.For more information, see Code First to a New Database.

Erstellen Sie Controller und AnsichtenCreate controller and views

Nun erstellen Sie eine Webseite, auf der Daten angezeigt werden.Now you'll create a web page to display data. Durch den Prozess der Daten Anforderung wird die Erstellung der Datenbank automatisch ausgelöst.The process of requesting the data automatically triggers the creation of the database. Zunächst erstellen Sie einen neuen Controller.You'll begin by creating a new controller. Aber bevor Sie dies tun, erstellen Sie das Projekt, um die Modell-und Kontext Klassen für das MVC-Controller Gerüst verfügbar zu machen.But before you do that, build the project to make the model and context classes available to MVC controller scaffolding.

  1. Klicken Sie in Projektmappen-Explorermit der rechten Maustaste auf den Ordner Controller , wählen Sie Hinzufügenaus, und klicken Sie dann auf Neues Gerüst Element.Right-click the Controllers folder in Solution Explorer, select Add, and then click New Scaffolded Item.

  2. Wählen Sie im Dialogfeld Gerüst hinzufügen die Option MVC 5-Controller mit Ansichten, verwenden Sie Entity Framework, und wählen Sie dann Hinzufügenaus.In the Add Scaffold dialog box, select MVC 5 Controller with views, using Entity Framework, and then choose Add.

    Dialogfeld "Gerüst hinzufügen" in Visual Studio

  3. Nehmen Sie im Dialogfeld Controller hinzufügen die folgenden Optionen vor, und wählen Sie dann Hinzufügenaus:In the Add Controller dialog box, make the following selections, and then choose Add:

    • Modell Klasse: Student (condesouniversity. Models) .Model class: Student (ContosoUniversity.Models). (Wenn diese Option nicht in der Dropdown Liste angezeigt wird, erstellen Sie das Projekt, und wiederholen Sie den Vorgang.)(If you don't see this option in the drop-down list, build the project and try again.)

    • Datenkontext Klasse: schoolContext (condesouniversity. DAL) .Data context class: SchoolContext (ContosoUniversity.DAL).

    • Controller Name: studentcontroller (nicht studentscontroller).Controller name: StudentController (not StudentsController).

    • Überlassen Sie die Standardwerte für die anderen Felder.Leave the default values for the other fields.

      Wenn Sie auf Hinzufügenklicken, erstellt das Gerüst eine StudentController.cs -Datei und einen Satz von Sichten (cshtml -Dateien), die mit dem Controller zusammenarbeiten.When you click Add, the scaffolder creates a StudentController.cs file and a set of views (.cshtml files) that work with the controller. Wenn Sie Projekte erstellen, die Entity Framework verwenden, können Sie in Zukunft auch einige zusätzliche Funktionen des gerüsters nutzen: Erstellen Sie die erste Modell Klasse, erstellen Sie keine Verbindungs Zeichenfolge, und geben Sie dann im Feld Controller hinzufügen einen neuen Datenkontext an, indem Sie die Schaltfläche + neben Datenkontext Klasseauswählen.In the future when you create projects that use Entity Framework, you can also take advantage of some additional functionality of the scaffolder: create your first model class, don't create a connection string, and then in the Add Controller box specify New data context by selecting the + button next to Data context class. Das Gerüst Fenster erstellt sowohl die DbContext Klasse als auch die Verbindungs Zeichenfolge sowie den Controller und die Ansichten.The scaffolder will create your DbContext class and your connection string as well as the controller and views.

  4. Visual Studio öffnet die Datei " controllers\studentcontroller.cs ".Visual Studio opens the Controllers\StudentController.cs file. Sie sehen, dass eine Klassen Variable erstellt wurde, die ein Daten Bank Kontext Objekt instanziiert:You see that a class variable has been created that instantiates a database context object:

    private SchoolContext db = new SchoolContext();
    

    Die Index Aktionsmethode Ruft eine Liste von Schülern aus der Entitätenmenge " Students " ab, indem die Students-Eigenschaft der Daten Bank Kontext Instanz gelesen wird:The Index action method gets a list of students from the Students entity set by reading the Students property of the database context instance:

    public ViewResult Index()
    {
        return View(db.Students.ToList());
    }
    

    In der Ansicht student\index.cshtml wird diese Liste in einer Tabelle angezeigt:The Student\Index.cshtml view displays this list in a table:

    <table>
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.LastName)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.FirstMidName)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.EnrollmentDate)
            </th>
            <th></th>
        </tr>
    
    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.LastName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.FirstMidName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.EnrollmentDate)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
                @Html.ActionLink("Details", "Details", new { id=item.ID }) |
                @Html.ActionLink("Delete", "Delete", new { id=item.ID })
            </td>
        </tr>
    }
    
  5. Drücken Sie STRG+F5, um das Projekt auszuführen.Press Ctrl+F5 to run the project. (Wenn der Fehler "Schatten Kopie kann nicht erstellt werden" angezeigt wird, schließen Sie den Browser, und wiederholen Sie den Vorgang.)(If you get a "Cannot create Shadow Copy" error, close the browser and try again.)

    Klicken Sie auf die Registerkarte Studenten , um die Testdaten anzuzeigen, die von der Seed Methode eingefügt wurden.Click the Students tab to see the test data that the Seed method inserted. Je nachdem, wie eng das Browserfenster ist, wird der Link "Student Registerkarte" in der oberen Adressleiste angezeigt, oder Sie müssen auf die obere rechte Ecke klicken, um den Link anzuzeigen.Depending on how narrow your browser window is, you'll see the Student tab link in the top address bar or you'll have to click the upper right corner to see the link.

    Menü Schaltfläche

Zeigen Sie die Datenbank anView the database

Wenn Sie die Seite "Studenten" ausgeführt haben und die Anwendung versucht hat, auf die Datenbank zuzugreifen, stellte EF fest, dass keine Datenbank vorhanden war und erstellt wurde.When you ran the Students page and the application tried to access the database, EF discovered that there was no database and created one. EF hat dann die Seed-Methode ausgeführt, um die Datenbank mit Daten aufzufüllen.EF then ran the seed method to populate the database with data.

Sie können entweder Server-Explorer oder SQL Server-Objekt-Explorer (ssox) verwenden, um die Datenbank in Visual Studio anzuzeigen.You can use either Server Explorer or SQL Server Object Explorer (SSOX) to view the database in Visual Studio. In diesem Tutorial verwenden Sie Server-Explorer.For this tutorial, you'll use Server Explorer.

  1. Schließen Sie den Browser.Close the browser.

  2. Erweitern Sie in Server-Explorerden Knoten Datenverbindungen (Sie müssen möglicherweise zuerst die Schaltfläche "Aktualisieren" auswählen), den Eintrag " School Context" (contosouniversity) und dann " Tables ", um die Tabellen in der neuen Datenbank anzuzeigen.In Server Explorer, expand Data Connections (you may need to select the refresh button first), expand School Context (ContosoUniversity), and then expand Tables to see the tables in your new database.

  3. Klicken Sie mit der rechten Maustaste auf die Tabelle Student , und klicken Sie auf Tabellendaten anzeigen , um die erstellten Spalten und die in die Tabelle eingefügten Zeilen anzuzeigen.Right-click the Student table and click Show Table Data to see the columns that were created and the rows that were inserted into the table.

  4. Schließen Sie die Server-Explorer Verbindung.Close the Server Explorer connection.

Die Datenbankdateien ContosoUniversity1. mdf und . ldf befinden sich im Ordner % User Profile% .The ContosoUniversity1.mdf and .ldf database files are in the %USERPROFILE% folder.

Da Sie den DropCreateDatabaseIfModelChanges Initialisierer verwenden, können Sie jetzt eine Änderung an der Student Klasse vornehmen, die Anwendung erneut ausführen, und die Datenbank wird automatisch neu erstellt, damit Sie ihrer Änderung entspricht.Because you're using the DropCreateDatabaseIfModelChanges initializer, you could now make a change to the Student class, run the application again, and the database would automatically be re-created to match your change. Wenn Sie z. b. der Student Klasse eine EmailAddress-Eigenschaft hinzufügen, die Seite "Students" erneut ausführen und dann die Tabelle erneut anzeigen, wird eine neue EmailAddress Spalte angezeigt.For example, if you add an EmailAddress property to the Student class, run the Students page again, and then look at the table again, you'll see a new EmailAddress column.

KonventionenConventions

Die Menge an Code, den Sie schreiben müssen, damit Entity Framework eine komplette Datenbank erstellen können, ist aufgrund von Konventionenoder Annahmen, die Entity Framework vornimmt, minimal.The amount of code you had to write in order for Entity Framework to be able to create a complete database for you is minimal because of conventions, or assumptions that Entity Framework makes. Einige von Ihnen wurden bereits notiert oder verwendet, ohne dass Sie Sie kennen:Some of them have already been noted or were used without your being aware of them:

  • Die pluralisierten Formen von Entitäts Klassennamen werden als Tabellennamen verwendet.The pluralized forms of entity class names are used as table names.
  • Eigenschaftennamen von Entitäten werden als Spaltennamen verwendet.Entity property names are used for column names.
  • Entitäts Eigenschaften, die ID oder className ID benannt werden, werden als Primärschlüssel Eigenschaften erkannt.Entity properties that are named ID or classname ID are recognized as primary key properties.
  • Eine Eigenschaft wird als Fremdschlüssel Eigenschaft interpretiert, wenn Sie <Name der Navigations Eigenschaft><Name der Primärschlüssel Eigenschaft> (z. b. StudentID für die Navigations Eigenschaft Student, da der Primärschlüssel der Student-Entität IDist).A property is interpreted as a foreign key property if it's named <navigation property name><primary key property name> (for example, StudentID for the Student navigation property since the Student entity's primary key is ID). Fremdschlüssel Eigenschaften können auch einfach <Namen der Primärschlüssel Eigenschaft> benannt werden (z. b. EnrollmentID, weil der Primärschlüssel der Enrollment Entität EnrollmentIDist).Foreign key properties can also be named the same simply <primary key property name> (for example, EnrollmentID since the Enrollment entity's primary key is EnrollmentID).

Sie haben gesehen, dass Konventionen überschrieben werden können.You've seen that conventions can be overridden. Sie haben z. b. angegeben, dass Tabellennamen nicht pluralisiert werden sollen, und später sehen Sie, wie eine Eigenschaft explizit als Fremdschlüssel Eigenschaft markiert wird.For example, you specified that table names shouldn't be pluralized, and you'll see later how to explicitly mark a property as a foreign key property.

Abrufen des CodesGet the code

Herunterladen des abgeschlossenen ProjektsDownload Completed Project

Zusätzliche RessourcenAdditional resources

Weitere Informationen zu EF 6 finden Sie in den folgenden Artikeln:For more about EF 6, see these articles:

Nächste SchritteNext steps

In diesem Tutorial führen Sie Folgendes durch:In this tutorial, you:

  • Erstellt eine MVC-Web-App.Created an MVC web app
  • Einrichten des WebsitestilsSet up the site style
  • Installiert Entity Framework 6Installed Entity Framework 6
  • Haben Sie das Datenmodell erstelltCreated the data model
  • Haben Sie den Datenbankkontext erstelltCreated the database context
  • Haben Sie die Datenbank mit Testdaten initialisiertInitialized DB with test data
  • Einrichten von EF 6 für die Verwendung von localdbSet up EF 6 to use LocalDB
  • Haben Sie Controller und Ansichten erstelltCreated controller and views
  • Haben Sie die Datenbank angezeigtViewed the database

Im nächsten Artikel erfahren Sie, wie Sie den Code zum Erstellen, lesen, aktualisieren und löschen (CRUD) in ihren Controllern und Ansichten überprüfen und anpassen.Advance to the next article to learn how to review and customize the create, read, update, delete (CRUD) code in your controllers and views.