ASP .NET CORE 5.0 Web API Türkçe Giriş Seviye -7 CRUD (CREATE READ UPDATE DELETE)

Erdemhan Özdin
4 min readNov 2, 2021

--

Merhabalar , artık veritabanımızı bağlamayı da öğrendiğimize göre bu bölümde CRUD işlemleri olarak bilinen CREATE , READ, UPDATE ve DELETE işlemlerimizi nasıl yapacağımıza bakacağız.

Bu bölümün daha anlaşılır olması için ders örneğimizi bırakıp daha basit bir uygulama yapacağız ve visual studio tarafından oluşturulan controller (denetleyici ) sınıfını inceleyerek kendi controllerimizi nasıl yazabileceğimiz konusunda fikir sahibi olacağız. Örneğimizde sadece şirketlerimiz ve şirketlere ait çalışanlarımız olduğunu var sayalım.

Öncelikle boş bir proje oluşturalım ve bölüm 6 serisinde gördüğümüz yöntemlerden bize uygun olanını seçerek modellerimizi , database contextimizi ve veritabanımızı oluşturup sistemimize bağlayalım. Eğer bu işlemlerin nasıl yapılacağını bilmiyorsanız bölüm 6 ya buradan ulaşabilirsiniz.

Veritabanımızı ve Contextimizi oluşturduktan sonra Controllers isimli klasörümüze sağ tıklayıp ekle -> denetleyici seçeneğini seçelim.

Daha sonra sağ menüden API seçeneğini seçerek Entity Framework kullanan eylemlere sahip API Denetleyicisi seçeneğini seçelim ve ekle diyelim.

Açılan pencereden personel modelimizi seçelim ve ekle diyelim işlem tamamlanınca aynı işlemi şirket modelimiz için de tekrarlayalım.

Visual Studio tarafından otomatik olarak oluşturulan controllerlarımızı ekledik şimdi personel sınıfımızı inceleyerek kodun nasıl çalıştığına bakalım.

Giriş:

Route ve ApiController taglerinin ne işe yaradığını 3. bölümde görmüştük. Context ile ilgili olan kısımlarımız ise veritabanı contextimizi dependency injection yöntemi ile controllerımıza eklemek için kullanılıyor teorik kısımları uzatmayacağım için dependency injectiondan burada bahsetmemize gerek yok.

PersonelExist methodumuz ise güncelleme ve silme işlemlerinde kontrol amaçlı gönderilen id’mizin veritabanında olup olmadığını kontrol ediyor.

Constructor ımızda elde ettiğimiz contextimiz üzerinden Personels tablomuza erişiyoruz ve Any methodu ve içerisinde vereceğimiz şart ile Personels tablomuzda id mizi arıyoruz.

e=>e.Id şeklinde gösterilen notasyona lambda notasyonu ismi veriliyor bu notasyonu sürekli kullanacağız . İlk kullandığımız ‘e’ Any methodunun ulaşacağı Personel nesnelerimize değişken ismi vermek için kullanılıyor yani burada e yerine keyfi bir isim de kullanabilirdik. => lambdadan sonrasında ise bu nesnemiz üzerinden sorgulayacağımız şartımızı yazmamız gerekiyor e.Id = id yani tablodaki personel nesneleri içerisinde herhangi bir nesnenin id si methodumuza gelen int ise aynı ise true değeri dönderen bir method.

POST Methodu CREATE:

HttpPost tagimiz bu methodun POST requestine yanıt vereceğini belirtiyor. Methodumuz asenkron çalışacağı için dönüş türünün bir Task olması gerekiyor. ActionResult ise HttpNotFound 404 gibi bilindik sonuçların dönderilmesi için kullanılan bir tür.

Methodumuz _context nesnemiz üzerinden Personels tablomuza erişerek Add methodu ile request tarafından gelen personel nesnemizi tablomuza ekliyor ancak veritabanımıza bu satırda değil SaveChangesAsync methodumuz ile ekleniyor.

Catch kısmı ise veritabanında oluşabilecek conflict gibi sıkıntıları yakalamak için kullanılmış.

CreatedAtAction ise başta bahsettiğimiz ActionResultlardan birisidir.

GET Methodu READ:

HttpGet tagimiz bu methodların GET requestine yanıt vereceğini belirtiyor. Methodumuz asenkron çalışacağı için dönüş türünün bir Task olması gerekiyor. ActionResult ise HttpNotFound 404 gibi bilindik sonuçların dönderilmesi için kullanılan bir tür. IEnumerable ise şimdilik serileştirilmiş liste gibi düşünebiliriz.

İlk methodumuz _context nesnesi üzerinden Personels tablomuza erişip tüm veriyi ToListAsync methodu ile bir listeye atarak döndermekte.

İkinci methodumuz ise httpget id yönlendirmesi ile alınan id yi listemizde arayarak bulunan nesneyi dönderiyor.

Post Methodu UPDATE:

Task ve ActionResultu artık öğrendik.

Güncelleme için kullanacağımız bu methodda öncelikle güncellemek istediğimiz personelin nesne ile requestte route ile gönderilen id nin doğruluğunu kontrol ediyoruz ve bir ActionResult olan BadRequest dönderebiliyoruz.

Sonrasında ise _context nesnemiz üzerinden Entry methodumuz ile tablomuza erişip nesnemizi değiştiriyoruz ve Entry statetimizi modified olarak değiştiriyoruz. Ancak create de olduğu üzere burada da asıl veritabanına kaydımızı yapan SaveChangeAsync Methodunu unutmuyoruz.

Catch kısmında ise güncellenecek kaydın veritabanımızda olup olmadığını kontrol ediyoruz ve bir ActionResult olan NotFound u dönüş yapabiliyoruz.

Delete Methodu DELETE:

Delete methodumuzda ise öncelikle READ kısmında olduğu gibi id miz ile silmek istediğimiz personel nesnesini veritabanımızdan alıyoruz ve Remove methodu ile siliyoruz tabiki yine asıl kayıt işlemini yapan SaveChangesAsync methodunu unutmuyoruz.

Sonuç olarak visual studio ile oluşturulan CRUD işlemlerimizi inceledik ve bizim de nasıl bir controller yazabileceğimiz hakkında fikir sahibi olduk ancak tabi ki bir controller ve CRUD işlemleri yazmanın çok fazla yolu var ve burada gördüklerimiz sadece Visual Studio nun oluşturdukları. İleriki bölümlerde ve internette çok daha fazla yöntem ile karşılaşabilirsiniz. Programın çalışıp çalışmadığını ise önceki bölümlerde gördüğümüz şekilde sizlerin denemesini tavsiye ederim. Kalın sağlıcakla

--

--

Erdemhan Özdin

Computer Engineering Master’s Degree , Research Assistant @Erciyes University , Software Developer 18 — ∞