Hasan Akpürüm
blog-post-1

Mvc Generic Controller (Repository)

Merhaba arkadaşlar;
Bu makalemde sizlere generic controller yapımını anlatmaya çalışacağım. Amacımız mümkün olduğu kadar az kod çok iş ve kod optimizasyonu. Repository design pattern uygulayarak generic controller yazmaya başlayalım. Ben ilk olarak boş bir solution açtım ve 3 katman ekledim örnek olması amaçlı basit bir mimari belirledim.

GenericControllerApplication.Core

Kütüphanemize Interface isimli klasör açtık ve IBaseRepository isimli generic Interface imizi ekledik. GenericControllerApplication.Core daki Manager sınıflarımız bu interface'i miras almalı.

 

Sıra GenericController sınıfımızı yasmaya geldik. Bu sınıfımızda Controller sınıfını miras almalı.

T nesnemiz göndereceğimiz entity nesnemiz

TRepo ise İş katmanımızdaki Manager sınıfımız.

ActionResult 'larımız ise controller 'ımızın crud işlemlerinde kullanılacağı methodlar. İstediğimizde override edebilmemiz için virtual yaptık.

Sıra geldi GenericControllerApplication.Entities katmanımıza Entity sınıfımızı eklemeye. Ben örnek olarak Customer isim li bir sınıf ekledim.

Artık iş katmanımızda manager sınıfımızı yazabiliriz.

GenericControllerApplication.Core katmanımızda Manager isimli bir klasör açıyor ve CustomerManager isimli sınıfımızı ekliyoruz. Makalemizin başında interface imizi eklerken söylemiştik manager sınıflarımız IBaseRepository interface' inden türemeli.

Ben burada methodların içerisini sanki veritabanından veri geliyormuş gibi geriye değer döndürdüm.

Sıra geldi GenericControllerApplication.Web katmanımıza

Projemizin Reference larını ekliyoruz.

Daha sonra CustomersController isimli controller ekliyoruz.

Controller 'ımız aşağıdaki gibi geldi. Normalde burada gerekli tüm methodlarımızı yazarız. GenericController ile crud methodlarımızı yazmamıza gerek kalmıyacak. 

Miras aldığı Controller sınıfını silerek Core katmanımızda yazmış olduğumuz GenericController sınıfından miras alıyoruz.

Entity Nesnemizi ve Manager nesnemizi gönderiyoruz.

Artık Crud methodlarımız hazır sadece view lerimizi eklememiz yeterli :)

Tüm view lerimizi ekledik ve projemizi çalıştırıyoruz.

 

List,Create,Update,Delete entegrelerimizi hızlı bir şekilde gerçekleştirdik. Ben anlaşılabilir olması için basit bir mimarı üzerinden gittim siz kendi mimari ve yapınıza göre istediğiniz gibi uyarlayabilirsiniz.

Umarım yeterince açıklayıcı anlatabilmişimdir. Yazımlarda, anlatımlarda bir hatam var ise affola.
Sorunuz olursa eğer hakkında kısmından bana sorularınızı email ile sorabilirsiniz.

Download Project

 

Yorum Yaz