Tutorial: Erste Schritte mit Entity Framework 6-Code unter Verwendung von MVC 5 (2023)

  • Artikel

Notiz

Für Neuentwicklungen empfehlen wirASP.NET Core Razor-Seitenüber ASP.NET MVC-Controller und -Ansichten. Eine ähnliche Tutorialreihe wie diese mit Razor Pages finden Sie unterTutorial: Erste Schritte mit Razor Pages in ASP.NET Core. Das neue Tutorial:

  • Ist einfacher zu befolgen.
  • Bietet weitere Best Practices für EF Core.
  • Verwendet effizientere Abfragen.
  • Ist mit der neuesten API aktueller.
  • Deckt weitere Funktionen ab.
  • Ist der bevorzugte Ansatz für die Entwicklung neuer Anwendungen.

In dieser Reihe von Tutorials erfahren Sie, wie Sie eine ASP.NET MVC 5-Anwendung erstellen, die Entity Framework 6 für den Datenzugriff verwendet. In diesem Tutorial wird der Code First-Workflow verwendet. Informationen zur Auswahl zwischen Code First, Database First und Model First finden Sie unterErstellen Sie ein Modell.

In dieser Tutorialreihe wird erläutert, wie Sie die Beispielanwendung „Contoso University“ erstellen. Bei der Beispielbewerbung handelt es sich um eine einfache Universitätswebsite. Damit können Sie Studenten-, Kurs- und Dozenteninformationen anzeigen und aktualisieren. Hier sind zwei der von Ihnen erstellten Bildschirme:

Tutorial: Erste Schritte mit Entity Framework 6-Code unter Verwendung von MVC 5 (1)

Tutorial: Erste Schritte mit Entity Framework 6-Code unter Verwendung von MVC 5 (2)

In diesem Tutorial werden Sie:

  • Erstellen Sie eine MVC-Web-App
  • Richten Sie den Site-Stil ein
  • Installieren Sie Entity Framework 6
  • Erstellen Sie das Datenmodell
  • Erstellen Sie den Datenbankkontext
  • DB mit Testdaten initialisieren
  • Richten Sie EF 6 für die Verwendung von LocalDB ein
  • Controller und Ansichten erstellen
  • Sehen Sie sich die Datenbank an

Voraussetzungen

  • Visual Studio 2017

Erstellen Sie eine MVC-Web-App

  1. Öffnen Sie Visual Studio und erstellen Sie ein C#-Webprojekt mitASP.NET-Webanwendung (.NET Framework)Vorlage. Benennen Sie das ProjektContosoUniversityund auswählenOK.

    Tutorial: Erste Schritte mit Entity Framework 6-Code unter Verwendung von MVC 5 (3)

  2. InNeue ASP.NET-Webanwendung – ContosoUniversity, wählenMVC.

    Tutorial: Erste Schritte mit Entity Framework 6-Code unter Verwendung von MVC 5 (4)

    Notiz

    Standardmäßig ist dieAuthentifizierungOption ist auf eingestelltKeine Authentifikation. Für dieses Tutorial erfordert die Web-App keine Benutzeranmeldung. Außerdem wird der Zugriff nicht basierend auf den angemeldeten Personen eingeschränkt.

  3. WählenOKum das Projekt zu erstellen.

Richten Sie den Site-Stil ein

Mit ein paar einfachen Änderungen werden das Site-Menü, das Layout und die Startseite eingerichtet.

  1. OffenViews\Shared\_Layout.cshtmlund nehmen Sie die folgenden Änderungen vor:

    • Ändern Sie jedes Vorkommen von „Meine ASP.NET-Anwendung“ und „Anwendungsname“ in „Contoso University“.
    • Fügen Sie Menüeinträge für Studenten, Kurse, Dozenten und Abteilungen hinzu und löschen Sie den Kontakteintrag.

    Die Änderungen werden im folgenden Codeausschnitt hervorgehoben:

       @ViewBag .Title – Contoso University @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr")  
    @RenderBody()

    © @ DateTime.Now.Year – Contoso University

    @Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/bootstrap") @RenderSection(" scripts", erforderlich: false)
  2. InAnsichten\Home\Index.cshtml, ersetzen Sie den Inhalt der Datei durch den folgenden Code, um den Text über ASP.NET und MVC durch Text über diese Anwendung zu ersetzen:

    @{ ViewBag.Title = "Home Page";}

    Contoso University

    Willkommen an der Contoso University

    Contoso University ist eine Beispielanwendung, die zeigt, wie Entity Framework 6 in einer ASP.NET MVC 5-Webanwendung verwendet wird.

    < div class="col-md-4">

    Erstellen Sie es von Grund auf

    Sie können die Anwendung erstellen, indem Sie die Schritte in der Tutorialreihe auf der ASP.NET-Site befolgen.

    < p>Sehen Sie sich das Tutorial an »

    Herunterladen

    Sie können das fertige Projekt herunterladen.

    Herunterladen »

  • Drücken Sie Strg+F5, um die Website auszuführen. Sie sehen die Startseite mit dem Hauptmenü.

  • Installieren Sie Entity Framework 6

    1. Von demWerkzeugMenü, wählenNuGet-Paketmanager, und wählen Sie dannPaket-Manager-Konsole.

    2. ImPaket-Manager-KonsoleGeben Sie im Fenster den folgenden Befehl ein:

      Install-Package EntityFramework

    Dieser Schritt ist einer der wenigen Schritte, die Sie in diesem Tutorial manuell ausführen müssen. Dies hätte jedoch auch automatisch durch die ASP.NET MVC-Gerüstfunktion erfolgen können. Sie führen sie manuell aus, damit Sie die für die Verwendung von Entity Framework (EF) erforderlichen Schritte sehen können. Später verwenden Sie Gerüste, um den MVC-Controller und die Ansichten zu erstellen. Eine Alternative besteht darin, Scaffolding das EF NuGet-Paket automatisch installieren zu lassen, die Datenbankkontextklasse zu erstellen und die Verbindungszeichenfolge zu erstellen. Wenn Sie dazu bereit sind, müssen Sie nur noch diese Schritte überspringen und Ihren MVC-Controller mit einem Gerüst versehen, nachdem Sie Ihre Entitätsklassen erstellt haben.

    Erstellen Sie das Datenmodell

    Als Nächstes erstellen Sie Entitätsklassen für die Anwendung „Contoso University“. Sie beginnen mit den folgenden drei Entitäten:

    Kurs<->Einschreibung<->Student

    EntitätenBeziehung
    Kurs zur EinschreibungEins-zu-viele
    Student zur EinschreibungEins-zu-viele

    Es besteht eine Eins-zu-viele-Beziehung zwischen ihnenStudentUndEinschreibungEntitäten, und es besteht eine Eins-zu-viele-Beziehung zwischen ihnenKursUndEinschreibungEntitäten. Mit anderen Worten: Ein Student kann in beliebig vielen Kursen eingeschrieben sein und für einen Kurs können beliebig viele Studenten eingeschrieben sein.

    In den folgenden Abschnitten erstellen Sie eine Klasse für jede dieser Entitäten.

    Notiz

    Wenn Sie versuchen, das Projekt zu kompilieren, bevor Sie alle diese Entitätsklassen erstellt haben, erhalten Sie Compilerfehler.

    Die Student-Entität

    • ImModelleErstellen Sie im Ordner eine Klassendatei mit dem NamenStudent.csindem Sie mit der rechten Maustaste auf den Ordner klickenLösungsforscherund wählenHinzufügen>Klasse. Ersetzen Sie den Vorlagencode durch den folgenden Code:

      using System;using System.Collections.Generic;namespace ContosoUniversity.Models{ public class Student { public int ID { get; Satz; } öffentlicher String Nachname { get; Satz; } öffentliche Zeichenfolge FirstMidName { get; Satz; } public DateTime EnrollmentDate { get; Satz; } public virtual ICollection Enrollments { get; Satz; } }}

    DerAUSWEISDie Eigenschaft wird zur Primärschlüsselspalte der Datenbanktabelle, die dieser Klasse entspricht. Standardmäßig interpretiert Entity Framework eine benannte EigenschaftAUSWEISoderKlassenname AUSWEISals Primärschlüssel.

    (Video) Entity Framework Core in weniger als 25 min verstehen.

    DerAnmeldungenEigentum ist einNavigationseigenschaft. Navigationseigenschaften enthalten andere Entitäten, die mit dieser Entität in Zusammenhang stehen. In diesem Fall ist dieAnmeldungenEigentum einesStudentDie Entität wird alles behaltenEinschreibungEntitäten, die damit in Zusammenhang stehenStudentjuristische Person. Mit anderen Worten, wenn eine gegebeneStudentZeile in der Datenbank hat zwei verwandteEinschreibungZeilen (Zeilen, die den Primärschlüsselwert dieses Schülers enthaltenStudenten IDFremdschlüsselspalte), dassStudentEntitätAnmeldungenDie Navigationseigenschaft enthält diese beidenEinschreibungEntitäten.

    Navigationseigenschaften werden normalerweise als definiertvirtuelldamit sie bestimmte Entity Framework-Funktionen nutzen können, zfaules Laden. (Lazy Loading wird später erläutertLesen verwandter DatenTutorial später in dieser Serie.)

    Wenn eine Navigationseigenschaft mehrere Entitäten enthalten kann (wie in Viele-zu-Viele- oder Eins-zu-Viele-Beziehungen), muss ihr Typ eine Liste sein, in der Einträge hinzugefügt, gelöscht und aktualisiert werden können, zICollection.

    Die Registrierungsentität

    • ImModelleOrdner erstellenEnrollment.csund ersetzen Sie den vorhandenen Code durch den folgenden Code:

      Namespace ContosoUniversity.Models{ public enum Grade { A, B, C, D, F } public class Enrollment { public int EnrollmentID { get; Satz; } public int CourseID { get; Satz; } public int StudentID { get; Satz; } öffentliche Qualität? Note { get; Satz; } öffentlicher virtueller Kurs Kurs { get; Satz; } public virtual Student Student { get; Satz; } }}

    DerEinschreibungs-IDEigenschaft wird der Primärschlüssel sein; Diese Entität verwendet dieKlassenname AUSWEISMuster stattAUSWEISvon selbst, wie Sie in der gesehen habenStudentjuristische Person. Normalerweise würden Sie ein Muster auswählen und es in Ihrem gesamten Datenmodell verwenden. Hier zeigt die Variante, dass Sie beide Muster verwenden können. In einem späteren Tutorial erfahren Sie, wie Sie es verwendenAUSWEISohneKlassennameerleichtert die Implementierung der Vererbung im Datenmodell.

    DerGradEigentum ist einAufzählung. Das Fragezeichen nach demGradDie Typdeklaration gibt an, dass dieGradEigentum istnullbar. Eine Note, die null ist, unterscheidet sich von einer Nullnote – null bedeutet, dass eine Note nicht bekannt ist oder noch nicht vergeben wurde.

    DerStudenten IDDie Eigenschaft ist ein Fremdschlüssel, und die entsprechende Navigationseigenschaft ist esStudent. EinEinschreibungEntität ist mit einem verbundenStudentEntität, daher kann die Eigenschaft nur eine einzige enthaltenStudentEntität (im Gegensatz zu derStudenteneinschreibungenNavigationseigenschaft, die Sie zuvor gesehen haben und die mehrere enthalten kannEinschreibungEntitäten).

    DerKurs-IDDie Eigenschaft ist ein Fremdschlüssel, und die entsprechende Navigationseigenschaft ist esKurs. EinEinschreibungEntität ist mit einem verbundenKursjuristische Person.

    Entity Framework interpretiert eine Eigenschaft als Fremdschlüsseleigenschaft, wenn sie benannt ist(Zum Beispiel,Studenten IDfür dieStudentNavigationseigenschaft seit demStudentDer Primärschlüssel der Entität istAUSWEIS). Fremdschlüsseleigenschaften können auch einfach gleich benannt werden(Zum Beispiel,Kurs-IDseit derKursDer Primärschlüssel der Entität istKurs-ID).

    Die Kursentität

    • ImModelleOrdner erstellenKurs.csund ersetzen Sie den Vorlagencode durch den folgenden Code:

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

    DerAnmeldungenDie Eigenschaft ist eine Navigationseigenschaft. AKursEntität kann mit einer beliebigen Anzahl von verknüpft seinEinschreibungEntitäten.

    Wir werden mehr darüber sagenDatabaseGeneratedAttributeAttribut in einem späteren Tutorial dieser Serie. Grundsätzlich können Sie mit diesem Attribut den Primärschlüssel für den Kurs eingeben, anstatt ihn von der Datenbank generieren zu lassen.

    Erstellen Sie den Datenbankkontext

    Die Hauptklasse, die die Entity Framework-Funktionalität für ein bestimmtes Datenmodell koordiniert, ist dieDatenbankkontextKlasse. Sie erstellen diese Klasse, indem Sie von ableitenSystem.Data.Entity.DbContextKlasse. In Ihrem Code geben Sie an, welche Entitäten im Datenmodell enthalten sind. Sie können auch bestimmte Verhaltensweisen von Entity Framework anpassen. In diesem Projekt wird die Klasse benanntSchulkontext.

    • Um einen Ordner im ContosoUniversity-Projekt zu erstellen, klicken Sie mit der rechten Maustaste auf das ProjektLösungsforscherund klickenHinzufügen, und klicken Sie dannNeuer Ordner. Benennen Sie den neuen OrdnerDAL(für Datenzugriffsschicht). Erstellen Sie in diesem Ordner eine neue Klassendatei mit dem NamenSchoolContext.csund ersetzen Sie den Vorlagencode durch den folgenden 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> Studenten { get; Satz; } public DbSet Enrollments { get; Satz; } public DbSet Courses { get; Satz; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove(); } }}

    Geben Sie Entitätssätze an

    Dieser Code erstellt eineDbSetEigenschaft für jeden Entitätssatz. In der Entity Framework-Terminologie ist einEntitätssatzentspricht typischerweise einer Datenbanktabelle und einerjuristische Personentspricht einer Zeile in der Tabelle.

    Notiz

    Sie können das weglassenDbSetUndDbSetAnweisungen und es würde genauso funktionieren. Entity Framework würde sie implizit einschließen, weil dieStudentEntität verweist auf dieEinschreibungEntität und dieEinschreibungEntität verweist auf dieKursjuristische Person.

    Geben Sie die Verbindungszeichenfolge an

    Der Name der Verbindungszeichenfolge (die Sie später zur Datei „Web.config“ hinzufügen) wird an den Konstruktor übergeben.

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

    Sie können auch die Verbindungszeichenfolge selbst anstelle des Namens einer Zeichenfolge übergeben, die in der Datei „Web.config“ gespeichert ist. Weitere Informationen zu Optionen zum Angeben der zu verwendenden Datenbank finden Sie unterVerbindungszeichenfolgen und Modelle.

    Wenn Sie keine Verbindungszeichenfolge oder deren Namen explizit angeben, geht Entity Framework davon aus, dass der Name der Verbindungszeichenfolge mit dem Klassennamen übereinstimmt. Der Standardname der Verbindungszeichenfolge in diesem Beispiel wäre dannSchulkontext, das Gleiche, was Sie explizit angeben.

    Geben Sie einzelne Tabellennamen an

    DermodelBuilder.Conventions.RemoveAussage in derOnModelCreatingDie Methode verhindert, dass Tabellennamen pluralisiert werden. Wenn Sie dies nicht getan hätten, würden die generierten Tabellen in der Datenbank benanntStudenten,Kurse, UndAnmeldungen. Stattdessen lauten die TabellennamenStudent,Kurs, UndEinschreibung. Die Entwickler sind sich nicht einig darüber, ob Tabellennamen pluralisiert werden sollten oder nicht. In diesem Tutorial wird die Singularform verwendet. Der wichtige Punkt ist jedoch, dass Sie die von Ihnen bevorzugte Form auswählen können, indem Sie diese Codezeile einschließen oder weglassen.

    DB mit Testdaten initialisieren

    Entity Framework kann automatisch eine Datenbank für Sie erstellen (oder löschen und neu erstellen), wenn die Anwendung ausgeführt wird. Sie können festlegen, dass dies bei jeder Ausführung Ihrer Anwendung oder nur dann erfolgen soll, wenn das Modell nicht mit der vorhandenen Datenbank synchronisiert ist. Sie können auch eine schreibenSamenMethode, die Entity Framework nach dem Erstellen der Datenbank automatisch aufruft, um sie mit Testdaten zu füllen.

    Das Standardverhalten besteht darin, eine Datenbank nur dann zu erstellen, wenn sie nicht vorhanden ist (und eine Ausnahme auszulösen, wenn sich das Modell geändert hat und die Datenbank bereits vorhanden ist). In diesem Abschnitt legen Sie fest, dass die Datenbank gelöscht und neu erstellt werden soll, wenn sich das Modell ändert. Das Löschen der Datenbank führt zum Verlust aller Ihrer Daten. Dies ist während der Entwicklung im Allgemeinen in Ordnung, da dieSamenDie Methode wird ausgeführt, wenn die Datenbank neu erstellt wird, und erstellt Ihre Testdaten neu. Aber in der Produktion möchten Sie im Allgemeinen nicht jedes Mal, wenn Sie das Datenbankschema ändern müssen, alle Ihre Daten verlieren. Später erfahren Sie, wie Sie Modelländerungen handhaben, indem Sie Code First-Migrationen verwenden, um das Datenbankschema zu ändern, anstatt die Datenbank zu löschen und neu zu erstellen.

    1. Erstellen Sie im DAL-Ordner eine neue Klassendatei mit dem NamenSchoolInitializer.csund ersetzen Sie den Vorlagencode durch den folgenden Code, der bei Bedarf die Erstellung einer Datenbank bewirkt und Testdaten in die neue Datenbank lädt.

      (Video) Entity Framework Core Tutorial: Das Entity Framework Core in praktischer Anwendung |video2brain.com

      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 { protected override void Seed(SchoolContext context) { var Students = new List { new Student{FirstMidName="Carson",LastName="Alexander",EnrollmentDate=DateTime.Parse("2005-09-01 ")}, neuer Student{FirstMidName="Meredith",LastName="Alonso",EnrollmentDate=DateTime.Parse("2002-09-01")}, neuer Student{FirstMidName="Arturo",LastName="Anand", EnrollmentDate=DateTime.Parse("2003-09-01")}, neuer Student{FirstMidName="Gytis",LastName="Barzdukas",EnrollmentDate=DateTime.Parse("2002-09-01")}, neuer Student{ FirstMidName="Yan",LastName="Li",EnrollmentDate=DateTime.Parse("2002-09-01")}, neuer Student{FirstMidName="Peggy",LastName="Justice",EnrollmentDate=DateTime.Parse(" 2001-09-01")}, neuer Student{FirstMidName="Laura",LastName="Norman",EnrollmentDate=DateTime.Parse("2003-09-01")}, neuer Student{FirstMidName="Nino",LastName ="Olivetto",EnrollmentDate=DateTime.Parse("2005-09-01")} }; Students.ForEach(s => context.Students.Add(s)); context.SaveChanges(); var course = new List { new Course{CourseID=1050,Title="Chemistry",Credits=3,}, new Course{CourseID=4022,Title="Microeconomics",Credits=3,}, new Course{ CourseID=4041,Title="Macroeconomics",Credits=3,}, neuer Kurs{CourseID=1045,Title="Calculus",Credits=4,}, neuer Kurs{CourseID=3141,Title="Trigonometry",Credits= 4,}, neuer Kurs{CourseID=2021,Title="Composition",Credits=3,}, neuer Kurs{CourseID=2042,Title="Literature",Credits=4,} }; Kurse.ForEach(s => context.Courses.Add(s)); context.SaveChanges(); var enrollments = new List { 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}, neue Einschreibung{StudentID=2,CourseID=1045,Grade=Grade.B}, neue Einschreibung{StudentID=2,CourseID=3141,Grade=Grade.F}, neu Einschreibung{StudentID=2,CourseID=2021,Grade=Grade.F}, neue Einschreibung{StudentID=3,CourseID=1050}, neue Einschreibung{StudentID=4,CourseID=1050,}, neue Einschreibung{StudentID=4,CourseID =4022,Grade=Grade.F}, neue Einschreibung{StudentID=5,CourseID=4041,Grade=Grade.C}, neue Einschreibung{StudentID=6,CourseID=1045}, neue Einschreibung{StudentID=7,CourseID=3141 ,Grade=Grade.A}, }; enrollments.ForEach(s => context.Enrollments.Add(s)); context.SaveChanges(); } }}

      DerSamenDie Methode verwendet das Datenbankkontextobjekt als Eingabeparameter und der Code in der Methode verwendet dieses Objekt, um der Datenbank neue Entitäten hinzuzufügen. Für jeden Entitätstyp erstellt der Code eine Sammlung neuer Entitäten und fügt sie den entsprechenden hinzuDbSetEigenschaft und speichert dann die Änderungen in der Datenbank. Es ist nicht notwendig, das anzurufenÄnderungen speichernFügen Sie nach jeder Entitätsgruppe eine Methode hinzu, wie hier beschrieben. Dies hilft Ihnen jedoch, die Ursache eines Problems zu lokalisieren, wenn eine Ausnahme auftritt, während der Code in die Datenbank schreibt.

    2. Um Entity Framework anzuweisen, Ihre Initialisierungsklasse zu verwenden, fügen Sie ein Element hinzuEntityFrameworkElement in der AnwendungWeb.configDatei (die im Stammprojektordner), wie im folgenden Beispiel gezeigt:

                   

      DerKontexttypGibt den vollständig qualifizierten Namen der Kontextklasse und die Assembly an, in der sie sich befindetDatenbankinitialisierertypGibt den vollständig qualifizierten Namen der Initialisierungsklasse und der Assembly an, in der sie sich befindet. (Wenn Sie nicht möchten, dass EF den Initialisierer verwendet, können Sie ein Attribut für festlegenKontextElement:disableDatabaseInitialization="true".) Weitere Informationen finden Sie unterKonfigurationsdateieinstellungen.

      Eine Alternative zum Festlegen des Initialisierers imWeb.configDatei besteht darin, dies im Code durch Hinzufügen einer zu tunDatabase.SetInitializerAussage zumAnwendungsstartMethode in derGlobal.asax.csDatei. Weitere Informationen finden Sie unterGrundlegendes zu Datenbankinitialisierern im Entity Framework-Code.

    Die Anwendung ist jetzt so eingerichtet, dass Entity Framework die Datenbank mit dem Modell (Ihrem) vergleicht, wenn Sie in einer bestimmten Ausführung der Anwendung zum ersten Mal auf die Datenbank zugreifenSchulkontextund Entitätsklassen). Wenn es einen Unterschied gibt, löscht die Anwendung die Datenbank und erstellt sie neu.

    Notiz

    Wenn Sie eine Anwendung auf einem Produktions-Webserver bereitstellen, müssen Sie Code entfernen oder deaktivieren, der die Datenbank löscht und neu erstellt. Sie werden dies in einem späteren Tutorial dieser Serie tun.

    Richten Sie EF 6 für die Verwendung von LocalDB ein

    LocalDBist eine schlanke Version der SQL Server Express-Datenbank-Engine. Es ist einfach zu installieren und zu konfigurieren, startet bei Bedarf und läuft im Benutzermodus. LocalDB wird in einem speziellen Ausführungsmodus von SQL Server Express ausgeführt, der es Ihnen ermöglicht, mit Datenbanken zu arbeiten.mdfDateien. Sie können LocalDB-Datenbankdateien in die Datei einfügenAnwendungsdatenOrdner eines Webprojekts, wenn Sie die Datenbank mit dem Projekt kopieren möchten. Mit der Benutzerinstanzfunktion in SQL Server Express können Sie auch damit arbeiten.mdfDateien, aber die Benutzerinstanzfunktion ist veraltet; Daher wird LocalDB für die Arbeit empfohlen.mdfDateien. LocalDB wird standardmäßig mit Visual Studio installiert.

    Normalerweise wird SQL Server Express nicht für Produktionswebanwendungen verwendet. Insbesondere LocalDB wird nicht für den produktiven Einsatz mit einer Webanwendung empfohlen, da es nicht für die Zusammenarbeit mit IIS konzipiert ist.

    • In diesem Tutorial arbeiten Sie mit LocalDB. Öffnen Sie die AnwendungWeb.configDatei und fügen Sie eine hinzuVerbindungsStringsElement vor demApp EinstellungenElement, wie im folgenden Beispiel gezeigt. (Stellen Sie sicher, dass Sie die aktualisierenWeb.configDatei im Stammprojektordner. Es gibt auch einWeb.configDatei in derAnsichtenUnterordner, den Sie nicht aktualisieren müssen.)

           

    Die von Ihnen hinzugefügte Verbindungszeichenfolge gibt an, dass Entity Framework eine LocalDB-Datenbank mit dem Namen verwendetContosoUniversity1.mdf. (Die Datenbank existiert noch nicht, wird aber von EF erstellt.) Wenn Sie die Datenbank in Ihrem erstellen möchtenAnwendungsdatenOrdner, den Sie hinzufügen könntenAttachDBFilename=|DataDirectory|\ContosoUniversity1.mdfzur Verbindungszeichenfolge. Weitere Informationen zu Verbindungszeichenfolgen finden Sie unterSQL Server-Verbindungszeichenfolgen für ASP.NET-Webanwendungen.

    Sie benötigen eigentlich keine Verbindungszeichenfolge imWeb.configDatei. Wenn Sie keine Verbindungszeichenfolge angeben, verwendet Entity Framework eine Standardverbindungszeichenfolge basierend auf Ihrer Kontextklasse. Weitere Informationen finden Sie unterCode zuerst in eine neue Datenbank.

    Controller und Ansichten erstellen

    Jetzt erstellen Sie eine Webseite zur Anzeige von Daten. Der Prozess der Datenabfrage löst automatisch die Erstellung der Datenbank aus. Sie beginnen mit der Erstellung eines neuen Controllers. Aber bevor Sie das tun, erstellen Sie das Projekt, um die Modell- und Kontextklassen für das MVC-Controller-Gerüst verfügbar zu machen.

    1. Klicken Sie mit der rechten Maustaste aufControllerOrdner inLösungsforscher, wählenHinzufügen, und klicken Sie dannNeuer Gerüstgegenstand.

    2. ImGerüst hinzufügenDialogfeld auswählenMVC 5-Controller mit Ansichten unter Verwendung von Entity Framework, und wählen Sie dannHinzufügen.

      Tutorial: Erste Schritte mit Entity Framework 6-Code unter Verwendung von MVC 5 (5)

    3. ImController hinzufügenTreffen Sie im Dialogfeld die folgende Auswahl und wählen Sie dannHinzufügen:

      • Modellklasse:Student (ContosoUniversity.Models). (Wenn diese Option nicht in der Dropdown-Liste angezeigt wird, erstellen Sie das Projekt und versuchen Sie es erneut.)

      • Datenkontextklasse:SchoolContext (ContosoUniversity.DAL).

      • Controllername:StudentController(nicht StudentsController).

      • Belassen Sie die Standardwerte für die anderen Felder.

        Wenn Sie klickenHinzufügen, der Gerüstbauer erstellt einStudentController.csDatei und eine Reihe von Ansichten (.cshtmlDateien), die mit dem Controller funktionieren. Wenn Sie in Zukunft Projekte erstellen, die Entity Framework verwenden, können Sie auch einige zusätzliche Funktionen des Gerüstbauers nutzen: Erstellen Sie Ihre erste Modellklasse, erstellen Sie keine Verbindungszeichenfolge und dann in derController hinzufügenFeld angebenNeuer Datenkontextdurch Auswahl der+Schaltfläche nebenDatenkontextklasse. Der Gerüstbauer erstellt IhrDbContextKlasse und Ihre Verbindungszeichenfolge sowie den Controller und die Ansichten.

    4. Visual Studio öffnet dieController\StudentController.csDatei. Sie sehen, dass eine Klassenvariable erstellt wurde, die ein Datenbankkontextobjekt instanziiert:

      private SchoolContext db = new SchoolContext();

      DerIndexDie Aktionsmethode ruft eine Liste der Schüler abStudentenEntität durch Lesen der festgelegtStudentenEigenschaft der Datenbankkontextinstanz:

      (Video) ASP.NET Core Teil 1/7 - Erste Schritte

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

      DerStudent\Index.cshtmlview zeigt diese Liste in einer Tabelle an:

      @foreach (var item in Model) { }
    5. Drücken Sie Strg+F5, um das Projekt auszuführen. (Wenn Sie die Fehlermeldung „Schattenkopie kann nicht erstellt werden“ erhalten, schließen Sie den Browser und versuchen Sie es erneut.)

      Drücke denStudentenKlicken Sie auf die Registerkarte, um die Testdaten anzuzeigenSamenMethode eingefügt. Je nachdem, wie schmal Ihr Browserfenster ist, sehen Sie den Link zur Registerkarte „Schüler“ in der oberen Adressleiste oder Sie müssen in die obere rechte Ecke klicken, um den Link anzuzeigen.

      Tutorial: Erste Schritte mit Entity Framework 6-Code unter Verwendung von MVC 5 (6)

    6. Sehen Sie sich die Datenbank an

      Als Sie die Seite „Studenten“ ausführten und die Anwendung versuchte, auf die Datenbank zuzugreifen, stellte EF fest, dass keine Datenbank vorhanden war, und erstellte eine. Anschließend führte EF die Seed-Methode aus, um die Datenbank mit Daten zu füllen.

      Sie können beides verwendenServer-ExploreroderSQL Server-Objekt-Explorer(SSOX), um die Datenbank in Visual Studio anzuzeigen. Für dieses Tutorial verwenden SieServer-Explorer.

      1. Schließen Sie den Browser.

      2. InServer-Explorer, expandierenDatenverbindungen(Möglicherweise müssen Sie zuerst die Schaltfläche „Aktualisieren“ auswählen), erweiternSchulkontext (ContosoUniversity)und dann erweiternTischeum die Tabellen in Ihrer neuen Datenbank anzuzeigen.

      3. Klicken Sie mit der rechten Maustaste aufStudentTabelle und klicken SieTabellendaten anzeigenum die erstellten Spalten und die in die Tabelle eingefügten Zeilen anzuzeigen.

      4. SchließeServer-ExplorerVerbindung.

      DerContosoUniversity1.mdfUnd.ldfDatenbankdateien befinden sich in der%BENUTZERPROFIL%Ordner.

      Weil Sie das verwendenDropCreateDatabaseIfModelChangesInitialisierer, Sie könnten jetzt eine Änderung an der vornehmenStudentKlasse, führen Sie die Anwendung erneut aus und die Datenbank wird automatisch neu erstellt, um Ihrer Änderung zu entsprechen. Wenn Sie beispielsweise eine hinzufügenE-Mail-AddresseEigentum an dieStudentRufen Sie die Seite „Studenten“ erneut auf, schauen Sie sich die Tabelle noch einmal an und Sie werden eine neue Klasse sehenE-Mail-AddresseSpalte.

      Konventionen

      Die Menge an Code, die Sie schreiben mussten, damit Entity Framework eine vollständige Datenbank für Sie erstellen konnte, ist aus diesem Grund minimalKonventionenoder Annahmen, die Entity Framework trifft. Einige davon wurden bereits zur Kenntnis genommen oder wurden verwendet, ohne dass Sie sich dessen bewusst waren:

      • Als Tabellennamen werden die Pluralformen von Entitätsklassennamen verwendet.
      • Für Spaltennamen werden Entitätseigenschaftennamen verwendet.
      • Benannte EntitätseigenschaftenAUSWEISoderKlassenname AUSWEISwerden als Primärschlüsseleigenschaften erkannt.
      • Eine Eigenschaft wird als Fremdschlüsseleigenschaft interpretiert, wenn sie benannt ist(Zum Beispiel,Studenten IDfür dieStudentNavigationseigenschaft seit demStudentDer Primärschlüssel der Entität istAUSWEIS). Fremdschlüsseleigenschaften können auch einfach denselben Namen haben (z. B.Einschreibungs-IDseit derEinschreibungDer Primärschlüssel der Entität istEinschreibungs-ID).

      Sie haben gesehen, dass Konventionen außer Kraft gesetzt werden können. Sie haben beispielsweise angegeben, dass Tabellennamen nicht pluralisiert werden sollen, und Sie werden später sehen, wie Sie eine Eigenschaft explizit als Fremdschlüsseleigenschaft markieren.

      Holen Sie sich den Code

      Laden Sie das abgeschlossene Projekt herunter

      Zusätzliche Ressourcen

      Weitere Informationen zu EF 6 finden Sie in diesen Artikeln:

      • ASP.NET-Datenzugriff – Empfohlene Ressourcen

      • Code First-Konventionen

      • Erstellen eines komplexeren Datenmodells

      Nächste Schritte

      In diesem Tutorial werden Sie:

      • Erstellt eine MVC-Web-App
      • Richten Sie den Site-Stil ein
      • Installiertes Entity Framework 6
      • Das Datenmodell wurde erstellt
      • Datenbankkontext erstellt
      • DB mit Testdaten initialisiert
      • Richten Sie EF 6 für die Verwendung von LocalDB ein
      • Controller und Ansichten erstellt
      • Datenbank angeschaut

      Fahren Sie mit dem nächsten Artikel fort, um zu erfahren, wie Sie den CRUD-Code (Create, Read, Update, Delete) in Ihren Controllern und Ansichten überprüfen und anpassen.

      Implementieren Sie grundlegende CRUD-Funktionalität

      @Html.DisplayNameFor(model => model.LastName) @Html.DisplayNameFor(model => model.FirstMidName) @Html. DisplayNameFor(model => model.EnrollmentDate)
      @Html.DisplayFor(modelItem => item.LastName ) @Html.DisplayFor(modelItem => item.FirstMidName) @Html.DisplayFor(modelItem => item.EnrollmentDate) @Html.ActionLink („Bearbeiten“, „Bearbeiten“, new { id=item.ID }) | @Html.ActionLink("Details", "Details", new { id=item.ID }) | @Html.ActionLink("Delete", "Delete", new { id=item.ID })

    FAQs

    How to change Entity Framework version 6 to 5? ›

    In this situation you can upgrade to EF5 using the following steps:
    1. Select Tools -> Library Package Manager -> Package Manager Console.
    2. Run Install-Package EntityFramework -version 5.0.
    Oct 14, 2020

    Can we use Entity Framework 6 in ASP NET MVC? ›

    The recommended way to use Entity Framework 6 in an ASP.NET Core application is to put the EF6 context and model classes in a class library project that targets . NET Framework. Add a reference to the class library from the ASP.NET Core project. See the sample Visual Studio solution with EF6 and ASP.NET Core projects.

    Which version of Entity Framework should I use for .NET 6? ›

    EF Core 6.0 will align with . NET 6 as a long-term support (LTS) release.

    How to write code in Entity Framework? ›

    Step 1 − First, create the console application from File → New → Project… Step 2 − Select Windows from the left pane and Console Application from the template pane. Step 3 − Enter EFCodeFirstDemo as the name and select OK. Step 4 − Right-click on your project in the solution explorer and select Manage NuGet Packages…

    What is difference between Entity Framework 5 and 6? ›

    EF5 is built into the core of . NET 4.5, whereas EF6 has been shifted out, and is open source. This means that you must add the new EF6 assemblies to all of the relevant projects in the solution, in particular the entry project. This means that you must remove assembly System.

    Is Entity Framework 6 still supported? ›

    Versions 6.0, 6.1, 6.2, and 6.3 are no longer supported. Although Entity Framework 6. x is still supported, it is no longer being developed and will only receive fixes for security issues. The Entity Framework 6.

    What is difference between MVC and Entity Framework? ›

    MVC is framework mainly concentrates on how you deliver a webpage from server to client. Entity framework is an object relational mapper which helps you to abstract different types of databases (MSSQL,MySQL etc) and helps querying objects instead of having sql strings in our project. Hope this helps!

    What is the difference between Entity Framework and .NET core? ›

    Entity Framework Core is an object-database mapper (and a successor to Entity Framework). . NET Core is a cross-platform software framework developed by Microsoft (and a successor to . NET Framework).

    What is the difference between Entity Framework and NET Framework? ›

    The entity framework is a powerful framework that handles the database services that generate the mechanism of basic SQL queries, we can use these both in one project so that the entity framework performs the CRUD operation and the ADO.net performs the reporting and is used to operates the bulk of SQL data operations.

    Should I use .NET 6 or .NET framework? ›

    NET 6 can run on natively Mac and Linux, . NET Framework cannot and you would need a third-party runtime like Mono for that capability. . NET 6 you can compile the framework into your application so the separate framework does not need to be installed to run your app. .

    What is better than Entity Framework? ›

    Dapper is generally faster than EF Core because it uses raw SQL queries and has less overhead. However, EF Core provides caching and other performance optimizations that can sometimes make it faster. Dapper is simpler than EF Core because it uses raw SQL queries and has fewer features.

    What is the latest version of Entity Framework 6? ›

    Entity Framework
    Original author(s)Microsoft
    Developer(s).NET Foundation
    Initial releaseAugust 11, 2008
    Stable releaseEntity Framework 6: v6.4.4 Entity Framework Core: v7.0.0 / Entity Framework Core: November 8, 2022
    Repositorygithub.com/dotnet/ef6 github.com/dotnet/efcore
    7 more rows

    What are the basic commands in Entity Framework? ›

    Command Line Interface Commands for Migrations
    CommandSub CommandsUsage
    DatabasedropDrops the database.
    updateUpdates the database to a specified migration.
    DbContextinfoGets information about a DbContext type.
    listLists available DbContext types.
    5 more rows

    What is Entity Framework for dummies? ›

    Entity framework is an Object Relational Mapping (ORM) framework that offers an automated mechanism to developers for storing and accessing the data in the database. This tutorial covers the features of Entity Framework using Code First approach.

    What is code first approach in Entity Framework Core 6? ›

    In the code-first approach, EF Core API creates the database and tables using migration based on the conventions and configuration provided in your domain classes. This approach is useful in Domain Driven Design (DDD).

    Should I use EF6 or EF Core? ›

    Keep using EF6 if the data access code is stable and not likely to evolve or need new features. Port to EF Core if the data access code is evolving or if the app needs new features only available in EF Core. Porting to EF Core is also often done for performance.

    Why not to use Entity Framework? ›

    The most common issue usually is on the programmer's side: firing the SQL execution on middle-query time, when it's not supposed to get the data yet and the query results being extensive (too many records) without the programmer even thinking about it.

    What is the newest Entity Framework? ›

    Entity Framework Core 8, scheduled for release in November 2023, brings new features and improvements to features already introduced in EF Core 7. Notable features include support for raw SQL queries for unmapped types, lazy-loading improvements, and support for TimeOnly and DateOnly SQL Server data types.

    Is .NET 6 same as .NET Core? ›

    NET 6, though, is ASP.NET Core 6, a major upgrade of Microsoft's open source framework for building modern web applications. ASP.NET Core 6 is built on top of the . NET Core runtime and allows you to build and run applications on Windows, Linux, and macOS. ASP.NET Core 6 combines the features of Web API and MVC.

    Is EF6 deprecated? ›

    Currently EF Core is the main focus of development for the Entity Framework Team at Microsoft. This means there are no new major features planned for EF6. However EF6 is still maintained as an open source project and a supported Microsoft product.

    What is the difference between .NET and .NET framework? ›

    Net framework is a free, open-source (few packages are available), development platform. The . Net Core is a cross-platform which may be used in creating, designing, and developing various applications with Windows, Mac OS, and Linux.

    How do I downgrade from .NET 6 to .NET 5? ›

    Steps to reproduce:
    1. Open Visual Studio Preview 2022 Preview 6.0.
    2. Create a new C# Console App from the default template.
    3. Target the .NET 6.0 framework.
    4. Run the project.
    5. Open the project properties and change target framework to .NET 5.0.

    How to upgrade net Framework to net 5? ›

    Migrating from the . NET Framework to . NET 5.0
    1. Create a New Folder for Your .NET Framework Project.
    2. Create a New File and Add the Code.
    3. Add the .csproj to the Existing Solution.
    4. Configure the Project File to Include Code.
    5. Add NuGet Packages.
    Nov 4, 2020

    How to update the entity in Entity Framework? ›

    To update this entity we need to attach the Department to the context and inform it to mark its status as Modified . Now if we call the SaveChanges method, the context will send an update query to the database.

    How to update Entity Framework Core version? ›

    Update the tools

    Use dotnet tool update --global dotnet-ef to update the global tools to the latest available version. If you have the tools installed locally in your project use dotnet tool update dotnet-ef . Install a specific version by appending --version <VERSION> to your command.

    Why is net 5 no longer supported? ›

    Because it was not a Long-Term Support (LTS) release that is regularly maintained -- getting security and other fixes along with technical support -- by Microsoft for three years, its support ends May 8 (non-LTS releases are supported for 18 months, or 6 months after the next release ships, whichever is longer). .

    What is net 5 vs net 6? ›

    NET 5 and . NET 6 are supported on multiple operating systems, including Windows, Linux, Android, iOS /tvOS, and macOS. The only difference is that . NET 6 is further supported on Windows Arms64 and macOS Apple Silicon while .

    How do I upgrade my net version? ›

    NET application from any initial version (. NET Framework or . NET Core) by right-clicking on your project in Solution Explorer and choose “Upgrade”. Don't forget to install the extension first.

    How do I upgrade my project from .NET framework to .NET 6? ›

    NET 6 will put you in a very good position to move to Microservices as the next step.
    1. Step 1 - Understand Your Dependencies. ...
    2. Step 2 - Upgrade the Visual Studio Project (csproj) Format. ...
    3. Step 3 - Multi-target . ...
    4. Step 4 - Fix Code Issues. ...
    5. Step 5 - High-Level Projects. ...
    6. Step 6 - Testing.
    Dec 12, 2021

    How do I manually update NET Framework? ›

    Updating . NetFramework
    1. Select the Latest Update Package Version.
    2. Download the Runtime package.
    3. Locate that file after it downloads.
    4. Double-click the file to start the setup wizard.
    5. Follow the instructions. The install wizard guides you through the setup.
    6. Once done reboot the PC. Shift4.
    Jan 9, 2023

    Can you install multiple versions of NET Framework? ›

    Users can run multiple versions of the framework of . NET on their computers. If you are a developer and need to deploy or develop software or an app, then you will need to know which .

    What are the correct steps for editing data using Entity Framework? ›

    To edit or delete data, update or remove entity objects from a context and call the SaveChanges() method. EF API will build the appropriate UPDATE or DELETE command and execute it to the database.

    How to update data in Entity Framework database first? ›

    Right-click anywhere on the design surface, and select Update Model from Database. In the Update Wizard, select the Refresh tab and then select Tables > dbo > Student. Click Finish. After the update process is finished, the database diagram includes the new MiddleName property.

    How to update database in Entity Framework code first? ›

    Run the Update-Database command in a Package Manager console. Code First Migrations will compare the migrations in our Migrations folder with the ones that have been applied to the database. It will see that the MigrationForRoleInEmp migration needs to be applied and run it.

    When would you use EF6 vs EF Core? ›

    Keep using EF6 if the data access code is stable and not likely to evolve or need new features. Port to EF Core if the data access code is evolving or if the app needs new features only available in EF Core. Porting to EF Core is also often done for performance.

    Videos

    1. Lernen Sie ASP.Net MVC 6 in einem Video kennen
    (McCullough & Associates)
    2. ASP.NET Core Teil 2/7 - MVC (Model View Controller)
    (Coding mit Jannick)
    3. Entity Framework 6.x: Was geht? Was geht nicht? | Dr. Holger Schwichtenberg
    (BastaConference)
    4. Einstieg in die Webentwicklung mit .NET 6 & ASP.NET Core
    (Code Inside Casts)
    5. Deine erste REST API in C# mit ASP NET Core
    (Coding mit Jannick)
    6. Kleine .net Core MVC Anwendung mit VS Code unter Linux, und VS 2019 unter Windows 10
    (Andreas Konarski)

    References

    Top Articles
    Latest Posts
    Article information

    Author: Mrs. Angelic Larkin

    Last Updated: 08/10/2023

    Views: 5519

    Rating: 4.7 / 5 (67 voted)

    Reviews: 82% of readers found this page helpful

    Author information

    Name: Mrs. Angelic Larkin

    Birthday: 1992-06-28

    Address: Apt. 413 8275 Mueller Overpass, South Magnolia, IA 99527-6023

    Phone: +6824704719725

    Job: District Real-Estate Facilitator

    Hobby: Letterboxing, Vacation, Poi, Homebrewing, Mountain biking, Slacklining, Cabaret

    Introduction: My name is Mrs. Angelic Larkin, I am a cute, charming, funny, determined, inexpensive, joyous, cheerful person who loves writing and wants to share my knowledge and understanding with you.