Repository Pattern Nedir ?

Veritabanı işlemlerinden insert,update ve delete gibi işlemleri yaparken her tablo için ayrı ayrı kod yazmamız gerekir. Yani, örneğin 20-25 tane tablomuz olsun, biz bu 20-25 tane tablomuz için her birine insert kodlarını, update kodlarını ve delete kodlarını yazmamız gerekiyor. Fakat bu işlemler çok fazla iş yükü barındırır ve her yaptığımız işlem için bağlantı açıp kapatmamız lazımdı. Repository Pattern ile hem kod kalabalığından kurtulup hemde iş yükünü azaltarak, ekle  hata payını en aza indirgeyerek daha temiz kod yazabiliriz.

Öncelikle bir sınıf oluşturup işlemlerimize başlayalım. Kütüphaneleri eklemeyi unutmayalım !

Yukarıdaki “using MvcApplication1.Models;”  adlı namespace’imiz projemizin data katmanından gelmektedir. Görüldüğü üzere tek bir sınıf üzerinden istediğimiz tabloya erişebileceğiz. Add, getList, Delete, Attach(Update) ve bir çok metotlarımız bulunmaktadır. Siz isterseniz kendi metodunuzu yazıp, onu tekrar tekrar istediğiniz tablo için çağırabilirsiniz. Şimdi bir örnek üzerinde daha kolay anlaşılacaktır.

Ürün ekleme sayfasında şu kodları yazmamız gerekir. Örneğin;

İşlem bu kadar basittir. Repository<Product> yazdığımız anda zaten hangi tabloya veri ekleneceğini sınıf sayesinde direk anlıyor kodlarımız.

Başka bir örnek, mesela Ürün_Detay sayfasına girdiğimizde tıklanılan ürünün gelmesini,gösterilmesini istiyorsak;

Ürün silmek istiyorsak;

Product yerine Kategorilerden bir veri silmek isterseniz Repository<Categories> yaparsınız, veya üye silmek isterseniz Repository<Members> yaparsınız, istediğiniz tablo ismini yazabilirsiniz. Aslında siz sınıfa gönderdiğiniz tablonun ismini bir Type olarak gönderiyorsunuz, gönderdiğiniz anda neyin ne olduğunu anlıyor 🙂

Bana kalırsa çok büyük bir nimet, ben bu Pattern ile tanışmadan evvel her bir tablo için amele gibi kod yazıyordum 😀

 

Takipte Kalın 🙂
Bu yazı Asp.net MVC, Bilişim, Repository Pattern kategorisine gönderilmiş ve , , ile etiketlenmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Alanı Doldurunuz! *