Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
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.
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.
I dialogrutan Lägg till stompaket väljer du "Web API 2 Controller with actions, using Entity Framework". Klicka på Lägg till.
Gör följande i dialogrutan Lägg till kontrollant :
- Välj klassen i listrutan
Author. (Om du inte ser det i listrutan kontrollerar du att du har skapat projektet.) - Kontrollera "Använd asynkrona kontrollantåtgärder".
- Lämna kontrollantnamnet som "AuthorsController".
- Klicka på plusknappen (+) bredvid datakontextklassen.
I dialogrutan Ny datakontext lämnar du standardnamnet och klickar på Lägg till.
Klicka på Lägg till för att slutföra dialogrutan Lägg till styrenhet . Dialogrutan lägger till två klasser i projektet:
-
AuthorsControllerdefinierar 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. -
BookServiceContexthanterar 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ånDbContext.
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.