Udostępnij za pośrednictwem


Dodawanie modeli i kontrolerów

Pobieranie ukończonego projektu

W tej sekcji dodasz klasy modeli definiujące 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 weryfikacji koncepcji:

  • Autor
  • Book (Książka)

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

Zrzut ekranu przedstawiający folder Eksplorator rozwiązań przedstawiający folder Models wyróżniony na niebiesko oraz elementy menu Dodaj i Klasa wyróżnione kolorem żółtym.

Zastąp cały kod boilerplate w pliku 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 bazy danych. Dla każdego modelu Id właściwość stanie się kolumną klucza podstawowego tabeli bazy danych.

W klasie Book definiuje AuthorId klucz obcy w Author tabeli. (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 . Możesz użyć właściwości nawigacji, aby uzyskać dostęp do powiązanego Author kodu. Mówię więcej o właściwościach nawigacji w części 4, Obsługa relacji jednostek.

Dodawanie kontrolerów internetowego interfejsu API

W tej sekcji dodamy kontrolery internetowego interfejsu API, które obsługują operacje CRUD (tworzenie, odczytywanie, aktualizowanie i usuwanie). Kontrolery będą używać platformy 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 plikiem Values Controllers dot c s wyróżnionym na czerwono wskazującym, że musi zostać usunięty.

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

W Eksplorator 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 Kontrolery i elementami menu Dodaj i Kontroler wyróżnionymi kolorami niebieskimi i żółtymi.

W oknie dialogowym Dodawanie szkieletu wybierz pozycję "Kontroler internetowego interfejsu API 2 z akcjami przy użyciu programu Entity Framework". Kliknij pozycję Dodaj.

Zrzut ekranu przedstawiający okno dialogowe Dodawanie szkieletu z wyróżnioną na niebieską opcją Web A P I 2 Controller with actions using Entity Framework (Dodawanie szkieletu).

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

  1. Na liście rozwijanej Klasa modelu wybierz klasę Author . (Jeśli nie widzisz go na liście rozwijanej, upewnij się, że projekt został utworzony).
  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 Dodawanie kontrolera z przyciskiem plus w kolorze czerwonym i klasą Author wybraną na liście rozwijanej Klasa modelu.

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

Zrzut ekranu przedstawiający okno dialogowe Nowy kontekst danych z nazwą domyślną 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 jednostki w czasie wykonywania, co obejmuje wypełnianie obiektów danymi z bazy danych, śledzenie zmian i utrwalanie danych do bazy danych. Dziedziczy z DbContextelementu .

Zrzut ekranu przedstawiający okno Eksplorator rozwiązań z plikiem Dot s Kontrolera autorów i plikiem dot c s kontekstu usługi książki w kolorze czerwonym.

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 klasą Modelu książki wybraną w menu rozwijanym Klasa modelu.