Asp.Net Mvc Veri Erişimi

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Diathorus
    Diathorus's avatar
    Kayıt Tarihi: 19/Mayıs/2014
    Erkek

    Müritler kolay gelsin,

    Bir süredir asp.net mvc projelerinde veri erişimi nasıl olmalıdır diye araştırıyorum.

    Kullanılan 2 yöntem var.

    1. Controller içerisinden entity framework direk erişim sağlayıp crud işlemlerini yapmak.

    2. Generic repository pattern ile crud işlemlerini yapmak.

    Repository pattern nedir diye soran olursa aşağıdaki linki inceleyebilir.

    http://www.janholinka.net/Blog/Article/9

     

    Büyük projelerde, özellikle controller içerisinde entity framework ile crud işlemleri yapmak MVC yazılım mimarisine uygun değil diye düşünüyorum.

    Bu şekilde yapıldığında controller acayip şişiyor ve oldukça karmaşık hale geliyor.

     

    Sizler veri erişimini nasıl yapıyorsunuz?

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    Hocam biz şöyle yapıyorduk. Kullanıcı Kaydı Örneğinden gidersek;

    createUser (controller) -> UserManager.createUser (Manager) -> UserRepository.create (Repository)

    Controller tarafında major validation'ları yapıp Manager'dan ilgili method çağırıyor. Bu method içerisinde Transaction yönetilip, try-catch kontrolleri yapılıyor. Burada işlem başarılı olursa Controller'a bir Result objesi döndürülüyor ve bu obje kullanıcıya response'da döndürülüyor. Repository tarafında da veritabanına kayıt işlemi gerçekleştiriliyor. Bir ara Repository Pattern'a bakmıştım. Bunun amacı DB bağımsızlığı sağlamak (yanlışsam düzeltin). Ancak EF kullandığında böyle bağlılık olmuyor ve Repository Pattern + EF kullanmak hammallık ve kodun daha çok dağılmasına sebep oluyor deniliyor (ve öyle olduğu çok fazla durumla karşılaştık)

    * Repository Pattern ile ilgili yazı: https://ayende.com/blog/4784/architecting-in-the-pit-of-doom-the-evils-of-the-repository-abstraction-layer


    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    saybirs
    saybirs's avatar
    Kayıt Tarihi: 24/Temmuz/2009
    Erkek
    TeRRoR bunu yazdı

    Hocam biz şöyle yapıyorduk. Kullanıcı Kaydı Örneğinden gidersek;

    createUser (controller) -> UserManager.createUser (Manager) -> UserRepository.create (Repository)

    Controller tarafında major validation'ları yapıp Manager'dan ilgili method çağırıyor. Bu method içerisinde Transaction yönetilip, try-catch kontrolleri yapılıyor. Burada işlem başarılı olursa Controller'a bir Result objesi döndürülüyor ve bu obje kullanıcıya response'da döndürülüyor. Repository tarafında da veritabanına kayıt işlemi gerçekleştiriliyor. Bir ara Repository Pattern'a bakmıştım. Bunun amacı DB bağımsızlığı sağlamak (yanlışsam düzeltin). Ancak EF kullandığında böyle bağlılık olmuyor ve Repository Pattern + EF kullanmak hammallık ve kodun daha çok dağılmasına sebep oluyor deniliyor (ve öyle olduğu çok fazla durumla karşılaştık)

    * Repository Pattern ile ilgili yazı: https://ayende.com/blog/4784/architecting-in-the-pit-of-doom-the-evils-of-the-repository-abstraction-layer

    +1 

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Diathorus
    Diathorus's avatar
    Kayıt Tarihi: 19/Mayıs/2014
    Erkek

    @TeRRoR dostum teşekkürler cevap için fakat kullandığınız yöntemi tam anlayamadım.

    Küçük bir kod örneği paylaşabilmen mümkün mü?

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek
    Diathorus bunu yazdı

    @TeRRoR dostum teşekkürler cevap için fakat kullandığınız yöntemi tam anlayamadım.

    Küçük bir kod örneği paylaşabilmen mümkün mü?

    Hocam hazırda kod yok ne yazıkki. Ancak şöyle birşey buldum. Anlatmak istediğimi anlatıyor hatta Service Layer'da içinde. Buraya bir bakabilirsin. Kafan karışırsa yine yazarsın. https://www.asp.net/mvc/overview/older-versions-1/contact-manager/iteration-4-make-the-application-loosely-coupled-cs


    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    KuZeTaR
    KuZeTaR's avatar
    Kayıt Tarihi: 26/Aralık/2009
    Erkek

    Repository pattern kullanıyorum.

    Controller'dan servisi çağırıyorum,

    Entity framework kullanmıyorum, MVC altyapısı yeterli oluyor.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek
    KuZeTaR bunu yazdı

    Repository pattern kullanıyorum.

    Controller'dan servisi çağırıyorum,

    Entity framework kullanmıyorum, MVC altyapısı yeterli oluyor.

     

    Hocam peki neden EF kullanmadın?


    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Diathorus
    Diathorus's avatar
    Kayıt Tarihi: 19/Mayıs/2014
    Erkek

    @TeRRoR dostum verdiğin linki okudum. ( https://ayende.com/blog/4784/architecting-in-the-pit-of-doom-the-evils-of-the-repository-abstraction-layer )

    İnternette bu tarz bir kaç yazı var fakat bu yazılar sadece repository patter nin neden kullanılmaması gerektiğini anlatıyor.

    Tamam repository pattern kullanmayalım da ne kullanalım? Hiç biri repository pattern yerine bir çözüm sunmuyor.

    İş yerinde bir projeye başlayacağım. Controller' dan EF' ye direkt erişim sağlayıp işimi yapıp geçicem gibi duruyor. 

    Diathorus tarafından 21/Ara/16 12:45 tarihinde düzenlenmiştir
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek
    Diathorus bunu yazdı

    @TeRRoR dostum verdiğin linki okudum. ( https://ayende.com/blog/4784/architecting-in-the-pit-of-doom-the-evils-of-the-repository-abstraction-layer )

    İnternette bu tarz bir kaç yazı var fakat bu yazılar sadece repository patter nin neden kullanılmaması gerektiğini anlatıyor.

    Tamam repository pattern kullanmayalım da ne kullanalım? Hiç biri repository pattern yerine bir çözüm sunmuyor.

    İş yerinde bir projeye başlayacağım. Controller' dan EF' ye direkt erişim sağlayıp işimi yapıp geçicem gibi duruyor. 

    Aman hocam öyle cayır cuyur controllarda yazma. Ama tabi uygulama 3-5 sayfalık öyle çak geç bir işse başka. Repository pattern database layer'in abstraction'u için bir çözüm ve EF bize bu imkanı zaten sağlıyor. Sen repository kısmını çık gerisini kullan. Controller içinde yapacağın logic'leri ayrı bir Manager-Business layer'da yapıcaksın.


    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
Toplam Hit: 1116 Toplam Mesaj: 9
asp.net asp.net mvc