ASP.NET Core El Kitabı
  • Introduction
  • İlk Uygulamanız
    • SDK'yi indirin
    • C# ile Merhaba Dünya
    • ASP.NET Core Projesi Oluşturma
  • MVC temelleri
    • Kontrolör Oluşturma
    • Model Oluşturma
    • Görüntü(View) oluşturma
    • Servis sınıfı ekleme
    • Bağımlı Enjeksiyon Kullanma
    • Kontrolörü Tamamlama
  • Ekstra paket Ekleme
  • Veri Tabanı Kullanma
    • Veri Tabanına Bağlanma
    • İçeriği Güncelleme
    • Göç Oluşturma
    • Yeni Servis Sınıfı Oluşturma
  • Yeni Özellikler Ekleme
    • Yeni Yapılacak Maddesi Ekleme
    • Maddeleri Onay Kutusu ile Tamamlama
  • Güvenlik ve Kimlik
    • Facebook Girişi Ekleme
    • Kimlik Kontrolü
    • Uygulama İçerisinde Kimlik Kullanma
    • Role Göre Yetkilendirme
  • Otomatik Test
    • Unit Testi
    • Integration Testi
  • Uygulamanın Dağıtılması
    • Azure'a Dağıtma
    • Docker ile Dağıtma
  • Sonuç
Powered by GitBook
On this page
  • Servis Konteynerını Güncelleme
  • Test
  1. Veri Tabanı Kullanma

Yeni Servis Sınıfı Oluşturma

MVC Temelleri bölümünde FakeTodoItemService adında bir sınıf oluşturup doğrudan yapılacaklar listesi eklemiştik. Artık veri tabanı kaynağına sahip olduğumuzadan dolayı Entity Framework Core ile gerçek verileri kullanabiliriz.

FakeTodoItemsService.cs'yi silin ve TodoItemService.cs adında yeni bir dosya oluşturun.

Services/TodoItemService.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AspNetCoreTodo.Data;
using AspNetCoreTodo.Models;
using Microsoft.EntityFrameworkCore;

namespace AspNetCoreTodo.Services
{
    public class TodoItemService : ITodoItemService
    {
        private readonly ApplicationDbContext _context;

        public TodoItemService(ApplicationDbContext context)
        {
            _context = context;
        }

        public async Task<IEnumerable<TodoItem>> GetIncompleteItemsAsync()
        {
            var items = await _context.Items
                .Where(x => x.IsDone == false)
                .ToArrayAsync();

            return items;
        }
    }
}

Dikkat ederseniz MVC Temelleri Bölümünde oluşturduğumuz bağımlı enjeksiyon burada da var. (Constructor'a içerik ekleme) Fakat bu defa ApplicationDbContext servise enjekte edilmiştir. Daha öncesinde ApplicationDbContext servis konteynerına eklendiğinden dolayı burada servise enjekte edilebilir. Aksi halde ConfigureServices içerisinde bunu belirtmemiz gerekirdi.

GetIncompleteItemAsync metodunu daha yakından inceleyecek olursak. Öncelikle DbSet içerisindeki tüm verilere ulaşabilmek için Items özelliğini(property) kullanmaktadır.

var items = await _context.Items

Ardından, Where metodu ile bunlardan sadece tamamlanmamış olanları seçmektedir.

.Where(x => x.IsDone == false)

Where metodu C# LINQ'e ait bir metoddur. Fonksiyonel programlamadan bazı esintiler almıştır. LINQ bizim daha kolay veri tabanı sorguları yazmamıza yardımcı olur. Aslında yukarıda oluşturduğumuz sorgu şu şekildedir: SELECT * FROM Items where IsDone=0 veya bunun eşiti NoSQL sorgusudur.

Sonunda ToArrayAsync metodu bu verileri asenkron dizi haline getirmeye yarar. Yani bu metodun await kelimesiyle çağırılması gerekmektedir.

Metodu daha kusa yazmak için itemsdeğişkenini silebilirsiniz. Böylece gelen değeri doğrudan değişken olmadan dönderebilirsiniz.

public async Task<IEnumerable<TodoItem>> GetIncompleteItemsAsync()
{
    return await _context.Items
        .Where(x => x.IsDone == false)
        .ToArrayAsync();
}

Servis Konteynerını Güncelleme

FakeTodoItemService'i sildiğimizden dolayı, ConfigureServices'i güncellememiz gerekmektedir.

services.AddScoped<ITodoItemService, TodoItemService>();

TodoController ITodoItemService'e bağımlıdır. Bu değişiklikten hiç haberi olmayacaktır. Fakat arka planda sahte servisten gerçek servise geçmiş bulunmaktayız.

Test

Uygulamayı tekrar çalıştırın ve http://localhost:5000/todo'a gidin. Sahte verilerin gittiğini göreceksiniz. Artık uygulamanız veri tabanından gerçek verileri çekmektedir.

Bir sonraki bölümde uygulamaya yeni yapılacka ekleme gibi özellikler ekleyeceksiniz.

PreviousGöç OluşturmaNextYeni Özellikler Ekleme

Last updated 7 years ago