Udostępnij za pośrednictwem


Dodawanie modeli i kontrolerów

Pobieranie ukończonego projektu

W tej sekcji dodasz klasy modelu, które definiują jednostki bazy danych. Następnie dodasz kontrolery internetowego interfejsu API, które wykonują operacje CRUD na tych jednostkach.

Dodawanie klas modelu

W tym samouczku utworzymy bazę danych przy użyciu podejścia "Code First" do platformy Entity Framework (EF). Za pomocą funkcji Code First piszesz klasy języka C#, które odpowiadają tabelom bazy danych, a program EF tworzy bazę danych. (Aby uzyskać więcej informacji, zobacz Entity Framework Development Approaches).)

Zaczynamy od zdefiniowania obiektów domeny jako obiektów POC (zwykłych obiektów CLR). Utworzymy następujące obiekty POCO:

  • Author
  • Książka

W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy folder Modele. Wybierz pozycję Dodaj, a następnie wybierz pozycję Klasa. Nadaj klasie Authornazwę .

Zrzut ekranu przedstawiający folder Solution Explorer z wyróżnionym folderem Models na niebiesko oraz z wyróżnionymi żółtym kolorem elementami menu Dodaj i Klasa.

Zastąp cały kod standardowy w Author.cs następującym kodem.

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; }
    }
}

Dodaj kolejną klasę o nazwie Book, z następującym kodem.

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; }
    }
}

Program Entity Framework będzie używać tych modeli do tworzenia tabel baz danych. Dla każdego modelu właściwość Id stanie się kolumną z kluczem głównym w tabeli bazy danych.

W klasie Book element AuthorId definiuje klucz obcy w tabeli Author. (Dla uproszczenia zakładam, że każda książka ma jednego autora). Klasa książki zawiera również właściwość nawigacji do powiązanego Authorelementu . Aby uzyskać dostęp do powiązanych Author elementów w kodzie, możesz użyć właściwości nawigacji. Mówię więcej o właściwościach nawigacji w części 4, Obsługa relacji jednostek.

Dodawanie kontrolerów Web API

W tej sekcji dodamy kontrolery interfejsu API sieci Web, które obsługują operacje CRUD (tworzenie, odczytywanie, aktualizowanie i usuwanie). Kontrolery będą używać programu Entity Framework do komunikowania się z warstwą bazy danych.

Najpierw można usunąć plik Controllers/ValuesController.cs. Ten plik zawiera przykładowy kontroler internetowego interfejsu API, ale nie jest on potrzebny na potrzeby tego samouczka.

Zrzut ekranu przedstawiający okno Eksplorator rozwiązań z wyróżnionym na czerwono plikiem Values Controllers dot c s wskazującym, że musi zostać usunięty.

Następnie skompiluj projekt. Szkielet internetowego interfejsu API używa odbicia w celu znalezienia klas modelu, więc potrzebuje skompilowanego zestawu.

W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy folder Controllers. Wybierz pozycję Dodaj, a następnie wybierz pozycję Kontroler.

Zrzut ekranu przedstawiający okno Eksplorator rozwiązań z folderem Controllers oraz elementami menu Dodaj i Kontroler wyróżnionymi kolorem niebieskim i żółtym.

W oknie dialogowym Dodawanie szkieletu wybierz pozycję "Kontroler Web API 2 z działaniami, używając Entity Framework". Kliknij przycisk Dodaj.

Zrzut ekranu przedstawiający okno dialogowe Dodaj element szkieletowy z wyświetlonym kontrolerem Web API 2 z akcjami używając opcji Entity Framework wyróżnionej na niebiesko.

W oknie dialogowym Dodawanie kontrolera wykonaj następujące czynności:

  1. Z listy rozwijanej Klasa modelu wybierz klasę Author . (Jeśli nie widzisz go na liście rozwijanej, upewnij się, że utworzono projekt).
  2. Sprawdź "Użyj akcji kontrolera asynchronicznego".
  3. Pozostaw nazwę kontrolera jako "AuthorsController".
  4. Kliknij przycisk plus (+) obok pozycji Klasa kontekstu danych.

Zrzut ekranu przedstawiający okno dialogowe

W oknie dialogowym Nowy kontekst danych pozostaw nazwę domyślną i kliknij przycisk Dodaj.

Zrzut ekranu przedstawiający okno dialogowe Nowy kontekst danych z domyślną nazwą w polu Nowy typ kontekstu danych.

Kliknij przycisk Dodaj , aby zakończyć okno dialogowe Dodawanie kontrolera . Okno dialogowe dodaje dwie klasy do projektu:

  • AuthorsController definiuje kontroler internetowego interfejsu API. Kontroler implementuje interfejs API REST używany przez klientów do wykonywania operacji CRUD na liście autorów.
  • BookServiceContext zarządza obiektami jednostek w czasie wykonywania, co obejmuje wypełnianie obiektów danymi z bazy danych, śledzenie zmian i utrwalanie danych do bazy danych. Dziedziczy z elementu DbContext.

Zrzut ekranu przedstawiający okno Eksploratora rozwiązań z plikiem Authors Controller dot c s i plikiem Book Service Context dot c s zaznaczonymi na czerwono.

W tym momencie ponownie skompiluj projekt. Teraz wykonaj te same kroki, aby dodać kontroler interfejsu API dla Book jednostek. Tym razem wybierz Book klasę modelu i wybierz istniejącą BookServiceContext klasę dla klasy kontekstu danych. (Nie twórz nowego kontekstu danych). Kliknij przycisk Dodaj , aby dodać kontroler.

Zrzut ekranu przedstawiający okno Dodawanie kontrolera z wybraną klasą modelu Book w menu rozwijanym Klasa modelu.