Freigeben über


Hinzufügen von Modellen und Controllern

Abgeschlossenes Projekt herunterladen

In diesem Abschnitt fügen Sie Modellklassen hinzu, die die Datenbankentitäten definieren. Anschließend fügen Sie Web-API-Controller hinzu, die CRUD-Vorgänge für diese Entitäten ausführen.

Hinzufügen von Modellklassen

In diesem Tutorial erstellen wir die Datenbank mithilfe des "Code First"-Ansatzes für Entity Framework (EF). Mit Code First schreiben Sie C#-Klassen, die Datenbanktabellen entsprechen, und EF erstellt die Datenbank. (Weitere Informationen finden Sie unter Entity Framework-Entwicklungsansätze.)

Zunächst definieren wir unsere Domänenobjekte als POCOs (einfache CLR-Objekte). Wir erstellen die folgenden POCOs:

  • Autor
  • Buch

Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf den Ordner Modelle. Wählen Sie Hinzufügen und dann Klasse aus. Geben Sie der Klassen den Namen Author.

Screenshot des Ordners Projektmappen-Explorer mit blau hervorgehobenem Ordner Models und gelb hervorgehobenen Menüelementen

Ersetzen Sie den gesamten Boilerplate-Code in Author.cs durch den folgenden Code.

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace BookService.Models
{
    public class Author
    {
        public int Id { get; set; }
        [Required]
        public string Name { get; set; }
    }
}

Fügen Sie mit dem folgenden Code eine weitere Klasse mit dem Namen hinzu Book.

using System.ComponentModel.DataAnnotations;

namespace BookService.Models
{
    public class Book
    {
        public int Id { get; set; }
        [Required]
        public string Title { get; set; }
        public int Year { get; set; }
        public decimal Price { get; set; }
        public string Genre { get; set; }

        // Foreign Key
        public int AuthorId { get; set; }
        // Navigation property
        public Author Author { get; set; }
    }
}

Entity Framework verwendet diese Modelle, um Datenbanktabellen zu erstellen. Für jedes Modell wird die Id -Eigenschaft zur Primärschlüsselspalte der Datenbanktabelle.

In der Book-Klasse definiert einen AuthorId Fremdschlüssel in der Author Tabelle. (Der Einfachheit halber gehe ich davon aus, dass jedes Buch einen einzelnen Autor hat.) Die Buchklasse enthält auch eine Navigationseigenschaft für die zugehörige Author. Sie können die Navigationseigenschaft verwenden, um auf das zugehörige Author im Code zuzugreifen. Ich sage mehr über Navigationseigenschaften in Teil 4, Behandeln von Entitätsbeziehungen.

Hinzufügen von Web-API-Controllern

In diesem Abschnitt fügen wir Web-API-Controller hinzu, die CRUD-Vorgänge (Erstellen, Lesen, Aktualisieren und Löschen) unterstützen. Die Controller verwenden Entity Framework, um mit der Datenbankschicht zu kommunizieren.

Zunächst können Sie die Datei Controller/ValuesController.cs löschen. Diese Datei enthält einen Beispiel-Web-API-Controller, den Sie für dieses Tutorial jedoch nicht benötigen.

Screenshot des Fensters Projektmappen-Explorer, das mit rot hervorgehobener Datei

Erstellen Sie als Nächstes das Projekt. Das Web-API-Gerüst verwendet Reflektion, um die Modellklassen zu finden, sodass die kompilierte Assembly benötigt wird.

Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Ordner „Controller“. Wählen Sie Hinzufügen und dann Controller aus.

Screenshot des fensters Projektmappen-Explorer mit blau und gelb hervorgehobenen Menüelementen

Wählen Sie im Dialogfeld Gerüst hinzufügen die Option "Web-API 2-Controller mit Aktionen mithilfe von Entity Framework" aus. Klicken Sie auf Hinzufügen.

Screenshot des Dialogfelds

Gehen Sie im Dialogfeld Controller hinzufügen wie folgt vor:

  1. Wählen Sie in der Dropdownliste Modellklasse die Klasse aus Author . (Wenn es in der Dropdownliste nicht aufgeführt wird, stellen Sie sicher, dass Sie das Projekt erstellt haben.)
  2. Aktivieren Sie "Asynchrone Controlleraktionen verwenden".
  3. Belassen Sie den Controllernamen als "AuthorsController".
  4. Klicken Sie auf die Plustaste (+) neben Datenkontextklasse.

Screenshot des Dialogfelds

Behalten Sie im Dialogfeld Neuer Datenkontext den Standardnamen bei, und klicken Sie auf Hinzufügen.

Screenshot des Dialogfelds

Klicken Sie auf Hinzufügen , um das Dialogfeld Controller hinzufügen abzuschließen. Das Dialogfeld fügt Ihrem Projekt zwei Klassen hinzu:

  • AuthorsController definiert einen Web-API-Controller. Der Controller implementiert die REST-API, die Clients zum Ausführen von CRUD-Vorgängen in der Liste der Autoren verwenden.
  • BookServiceContext verwaltet Entitätsobjekte während der Laufzeit, was das Auffüllen von Objekten mit Daten aus einer Datenbank, die Änderungsnachverfolgung und das Beibehalten von Daten in der Datenbank umfasst. Er erbt von DbContext.

Screenshot des fensters Projektmappen-Explorer mit der Datei

Erstellen Sie an diesem Punkt das Projekt erneut. Führen Sie nun die gleichen Schritte aus, um einen API-Controller für Book Entitäten hinzuzufügen. Wählen Sie Book diesmal die Modellklasse aus, und wählen Sie die vorhandene BookServiceContext Klasse für die Datenkontextklasse aus. (Erstellen Sie keinen neuen Datenkontext.) Klicken Sie auf Hinzufügen , um den Controller hinzuzufügen.

Screenshot des Fensters