1. Haberler
  2. Programlama
  3. Real Estate Projesi ASPNET CORE 8.0 bölüm 17

Real Estate Projesi ASPNET CORE 8.0 bölüm 17

Murat Yücedağ'ın AspNet Core 8.0 ile Api Dapper gibi teknolojileri kullandığı Real Estate serisinin 17. bölümünü izledim. Bu bölümde yapılanları size anlatmaya çalıştım. AspNet Core ile geliştirilen bu projede her ders için blog yazısı yazmaya çalışacağım. Sizler de bu blog serisini takip ederek dahada pekiştirmiş olursunuz. Ben Eyüp Furkan Tüylü. AspNet Core 8.0 projesine hepiniz hoş geldiniz!

Real Estate Projesi ASPNET CORE 8.0 bölüm 17 - murat yücedağ - eyüp furkan tüylü
Real Estate Projesi ASPNET CORE 8.0 bölüm 17 - murat yücedağ - eyüp furkan tüylü
Paylaş

Bu Yazıyı Paylaş

veya linki kopyala

Anlatıma geçmeden önce AspNet Core 8.0 ile geliştirdiğimiz bu projeye ait linkleri aşağıda sıraladım.

AspNet Core 8.0 projesi için linkler

GitHub

Video Linki

Ayrıca bir önceki yazıyı okumadıysanız;

bir önceki yazı
thumbnail
Real Estate Projesi ASPNET CORE 8.0 bölüm 16
Haberi görüntüle

AspNet Core ile geliştirdiğimiz projenin bu bölümünde “hizmetler” kısmına verilerimizi getirerek devam ediyoruz.

API Tarafını Güncelleyelim – REAL ESTATE ASPNET CORE 8.0

İlk olarak api tarafı ile başladık. Çünkü ServiceComponent’e veri çekebilmemiz için data tarafı ile bağlantımızın hazır olması gerekiyor.

API Projesi > Repositories > ServiceRepository

Yukarıdaki adresin içerisine iki öğe ekliyoruz. Bu öğeler;

  • ServiceRepository.cs ( Class’dan türettik )
  • IServiceRepository.cs ( Interface’den türettik )

Şimdi datadan dönen veriyi bir class’a oturtabilmek için DTO’lar ekleyeceğiz. Bunun için şu yolda yeni bir klasör oluşturuyoruz;

API Projesi > Dtos > ServiceDtos

SerivceDtos adında bir klasör oluşturduk. Ardından içerisine DTO’larımızı tanımlayacağız. Bunun için klasörün içine ResultServiceDto adından ilk DTO’muzu class olarak oluşturalım.

namespace RealEstate_Dapper_Api.Dtos.ServiceDtos
{
    public class ResultServiceDto
    {
        public int ServiceID { get; set; }
        public string ServiceName { get; set; }
        public bool ServiceStatus { get; set; }
    }
}

ResultServiceDto’muz yukarıdaki koddaki gibi olacak. Create metodumuz için de DTO oluşturalım.

namespace RealEstate_Dapper_Api.Dtos.ServiceDtos
{
    public class CreateServiceDto
    {
        public string ServiceName { get; set; }
        public bool ServiceStatus { get; set; }
    }
}

Burada ID’ye ihtiyacımız yok. ID Database tarafından otomatik olarak atanacak.

Update metodumuz için de bir DTO hazırlayalım;

namespace RealEstate_Dapper_Api.Dtos.ServiceDtos
{
    public class UpdateServiceDto
    {
        public int ServiceID { get; set; }
        public string ServiceName { get; set; }
        public bool ServiceStatus { get; set; }
    }
}

Burada ID’ye de ihtiyaç duyacağız. Çünkü hangi Service olduğunu bilmemizi sağlayacak. ID’ler benzersiz numaralar olduğu için direkt olarak ilgili service’i işaret edecek. Bir de GetByID işlemi için DTO tanımlayalım;

namespace RealEstate_Dapper_Api.Dtos.ServiceDtos
{
    public class GetByIDServiceDto
    {
        public int ServiceID { get; set; }
        public string ServiceName { get; set; }
        public bool ServiceStatus { get; set; }
    }
}

Şimdi IServiceRepository interface’ine dönelim ve ilgili metodlarımızın imzalarını tanımlayalım.

using RealEstate_Dapper_Api.Dtos.ServiceDtos;

namespace RealEstate_Dapper_Api.Repositories.ServiceRepository
{
    public interface IServiceRepository
    {
        Task<List<ResaultServiceDto>> GetAllServiceAsync();
        void CreateService(CreateServiceDto serviceDto);
        void DeleteService(int id);
        void UpdateService(UpdateServiceDto serviceDto);
        Task<GetByIDServiceDto> GetService(int id);
    }
}

Interface’i tanımladığımıza göre ServiceRepository’e giderek kalıtım almasını ve metodların implemente edilmesini sağlamalıyız;

using RealEstate_Dapper_Api.Dtos.ServiceDtos;

namespace RealEstate_Dapper_Api.Repositories.ServiceRepository
{
    public class ServiceRepository : IServiceRepository
    {
        public Task<List<ResaultServiceDto>> GetAllServiceAsync()
        {
            throw new NotImplementedException();
        }

        public void CreateService(CreateServiceDto serviceDto)
        {
            throw new NotImplementedException();
        }

        public void DeleteService(int id)
        {
            throw new NotImplementedException();
        }

        public void UpdateService(UpdateServiceDto serviceDto)
        {
            throw new NotImplementedException();
        }

        public Task<GetByIDServiceDto> GetService(int id)
        {
            throw new NotImplementedException();
        }
    }
}

Sınıfın yanına “: IServiceRepository” yazdıktan sonra üzerine gelip açılan menüde implement interface dedik ve tüm metotlar boş bir şekilde bizim için oluşturuldu.

Burada ilk olarak context sınıfı oluşturarak db’ye bağlantı isteği atabilmemizi sağlayalım;

        private readonly Context _context;

        public ServiceRepository(Context context)
        {
            _context = context;
        }
ServiceRepository context oluşturma ve constructor metodunu oluşturma - Real Estate Projesi ASPNET CORE 8.0 bölüm 17
Real Estate Projesi ASPNET CORE 8.0 bölüm 17 7

Bu kodları class’ın içinde, metodların hizasında yazmalıyız. Ardından ilk metodumuz olarak GetAllServiceAsync metodunu güncelleyeceğiz. Diğerlerine ilerleyen derslerde bakacağız.

ServiceRepository dosyası - Real Estate Projesi ASPNET CORE 8.0 bölüm 17
Real Estate Projesi ASPNET CORE 8.0 bölüm 17 8
public async Task<List<ResaultServiceDto>> GetAllServiceAsync()
{
            string query = "Select * From Service";

            using(var connection = _context.CreateConnection())
            {
                var values = await connection.QueryAsync<ResaultServiceDto>(query);
                return values.ToList();
            }
}

Metodumuzu yukarıdaki koddaki gibi düzenliyoruz. Bu sayede Service tablosundaki tüm verileri ResaultServiceDto’dan bir neste türeterek bir listenin içinde bize verecek. Burada dikkat etmemiz gereken metodu async ile işaretlemek. Çünkü asenkron bir işlem yapıyoruz. values değerini doldururken await ile zaman isteyecek bir işlem yapıyoruz.

Şimdi API tarafında gözükebilmesi için API Controller‘a ihtiyacımız var. Bunun için aşağıdaki adreste bir kontroller tanımlıyoruz;

API Projesi > Controller

ServiceController’ımızı oluşturduktan sonra bir IServiceRepository’den serviceRepository örneği oluşturacağız ve aynı zamanda constructor metodunu da oluşturacağız.

    private readonly IServiceRepository _serviceRepository;

    public ServicesController(IServiceRepository serviceRepository)
    {
        _serviceRepository = serviceRepository;
    }

Ardından ilk API end pointimizi yazalım.

    [HttpGet]
    public IActionResult GetServiceList()
    {
        var result = _serviceRepository.GetAllServiceAsync();
        return Ok(result);
    }
ServiceController API Controller - Real Estate Projesi ASPNET CORE 8.0 bölüm 17
Real Estate Projesi ASPNET CORE 8.0 bölüm 17 9

Kodları yazdıktan sonra APIController’ımız bu şekilde gözükmeli.

Şimdi ise Program.cs tarafında bir işlem yapacağız.

builder.Services.AddTransient<IServiceRepository, ServiceRepository>();

kodunu uygun yere yapıştırmalıyız.

Program.cs  dosyasını düzenleyelim - Real Estate Projesi ASPNET CORE 8.0 bölüm 17
Real Estate Projesi ASPNET CORE 8.0 bölüm 17 10

Bir de unutmadan API’mizi async olarak işaretlemeliyiz. Yani ServiceController’da GetServiceList metodu şu şekilde gözükmeli;

        [HttpGet]
        public async Task<IActionResult> GetServiceList()
        {
            var result = await _serviceRepository.GetAllServiceAsync();
            return Ok(result);
        }

Result’a veri aktaracak kısmı da await ile bekliyor olmalıyız. IActionResult’u da Task olarak işaretlemeliyiz.

Bunu yapıp test ettiğimizde;

image 11 5
Real Estate Projesi ASPNET CORE 8.0 bölüm 17 11

Verilerin geldiğini görüyoruz.

UI Katmanında Verileri Getirelim

Verileri düzgün bir formatta getirebilmek için Dtos klasöründe Service için bir klasör oluşturup ilgili dto sınıflarını burada tanımlayacağız. ServiceDtos klasörü oluşturduktan sonra içine bir class oluşturuyoruz ve adına ReaultServiceDto diyoruz.

namespace RealEstate_Dapper_UI.Dtos.ServiceDtos
{
    public class ResaultServiceDto
    {
        public int ServiceID { get; set; }
        public string ServiceName { get; set; }
        public bool ServiceStatus { get; set; }
    }
}

Sınıfı da yukarıdaki gibi dolduruyoruz.

Evet bu derslik bu kadardı. Bir sonraki derste verilerimizi componente çekiyor olacağız.

0
mutlu
Mutlu
0
_zg_n
Üzgün
0
sinirli
Sinirli
0
_a_rm_
Şaşırmış
0
k_t_
Kötü
0
beynim_yand_
Beynim Yandı
0
_eytani
Şeytani
Real Estate Projesi ASPNET CORE 8.0 bölüm 17
Yorum Yap

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Giriş Yap

Eyüp Furkan Tüylü ayrıcalıklarından yararlanmak için hemen giriş yapın veya hesap oluşturun, üstelik tamamen ücretsiz!