Lägga till modeller och styrenheter

Ladda ned slutfört projekt

I det här avsnittet lägger du till modellklasser som definierar databasentiteterna. Sedan lägger du till webb-API-kontrollanter som utför CRUD-åtgärder på dessa entiteter.

Lägg till modellklasser

I den här självstudien skapar vi databasen med metoden "Code First" för Entity Framework (EF). Med Code First skriver du C#-klasser som motsvarar databastabeller och EF skapar databasen. (Mer information finns i Entity Framework Development Approaches.)

Vi börjar med att definiera våra domänobjekt som POCOs (vanliga CLR-objekt). Vi skapar följande POCO:er:

  • Author
  • Bok

Högerklicka på mappen Modeller i Solution Explorer. Välj Lägg till och sedan Klass. Namnge klassen Author.

Skärmbild av mappen Solution Explorer som visar mappen Modeller markerad i blått och menyalternativen Lägg till och Klass markerade i gult.

Ersätt all standardkod i Author.cs med följande kod.

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

Lägg till en annan klass med namnet Book, med följande kod.

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 använder dessa modeller för att skapa databastabeller. För varje modell blir egenskapen Id den primära nyckelkolumnen i databastabellen.

I klassen Bok AuthorId definieras en främmande nyckel i Author-tabellen. (För enkelhetens skull antar jag att varje bok har en enda författare.) Bokklassen innehåller också en navigeringsegenskap till den relaterade Author. Du kan använda navigeringsegenskapen för att komma åt relaterade Author i koden. Jag säger mer om navigeringsegenskaper i del 4, Hantering av entitetsrelationer.

Lägga till webb-API-kontrollanter

I det här avsnittet lägger vi till webb-API-styrenheter som stöder CRUD-åtgärder (skapa, läsa, uppdatera och ta bort). Kontrollanterna använder Entity Framework för att kommunicera med databasskiktet.

Först kan du ta bort filen Controllers/ValuesController.cs. Den här filen innehåller ett exempel på en webb-API-kontrollant, men du behöver den inte för den här självstudien.

Skärmbild av Solution Explorer-fönstret som visas med filen Values Controllers dot c s markerat i rött som anger att den måste tas bort.

Bygg sedan projektet. Webb-API:ets byggnadsställningar använder reflektion för att hitta modellklasserna, så den behöver den kompilerade sammansättningen.

Högerklicka på mappen Controllers i Solution Explorer. Välj Lägg till och välj sedan Styrenhet.

Skärmbild av Solution Explorer-fönstret med mappen Controllers och menyalternativen Lägg till och Styrenhet markerade i blått och gult.

I dialogrutan Lägg till stompaket väljer du "Web API 2 Controller with actions, using Entity Framework". Klicka på Lägg till.

Skärmbild av dialogrutan Lägg till byggnadsställning som visar web-A P I 2-kontrollanten med åtgärder med entity framework-alternativet markerat i blått.

Gör följande i dialogrutan Lägg till kontrollant :

  1. Välj klassen i listrutan Author. (Om du inte ser det i listrutan kontrollerar du att du har skapat projektet.)
  2. Kontrollera "Använd asynkrona kontrollantåtgärder".
  3. Lämna kontrollantnamnet som "AuthorsController".
  4. Klicka på plusknappen (+) bredvid datakontextklassen.

Skärmbild av dialogrutan Lägg till kontrollant som visar plusknappen inringad i rött och klassen Författare vald i listrutan Modellklass.

I dialogrutan Ny datakontext lämnar du standardnamnet och klickar på Lägg till.

Skärmbild av dialogrutan Ny datakontext som visar standardnamnet i fältet Ny datakontexttyp.

Klicka på Lägg till för att slutföra dialogrutan Lägg till styrenhet . Dialogrutan lägger till två klasser i projektet:

  • AuthorsController definierar en webb-API-kontrollant. Kontrollanten implementerar rest-API:et som klienter använder för att utföra CRUD-åtgärder i listan över författare.
  • BookServiceContext hanterar entitetsobjekt under körningen, vilket omfattar att fylla i objekt med data från en databas, ändra spårning och spara data till databasen. Den ärver från DbContext.

Skärmbild av Solution Explorer-fönstret med filen Authors Controller dot c s och filen Book Service Context dot c s inringad i rött.

Bygg nu projektet igen. Gå nu igenom samma steg för att lägga till en API-kontrollant för Book entiteter. Den här gången väljer du Book för modellklassen och väljer den befintliga BookServiceContext klassen för datakontextklassen. (Skapa ingen ny datakontext.) Klicka på Lägg till för att lägga till kontrollanten.

Skärmbild av fönstret Lägg till kontrollant med klassen Bokmodell vald i listrutan Modellklass.