none
SqlConnection ve dbconnection RRS feed

  • Soru

  • Öncelikle yazılıma başlayalı 3 ay oldu bunu belirtmek isterim.

    Ben normalde projemde Sql ile bağlantımı sqlconnection baglan=sqlConnection()'la sağlıyordum ama bugün internette gezerken birisinin projeye ekle yaparak ado.net entity data model'ten bağlantı yaptığını ve sonrasında örnek veriyorum gridview'e proje anında bile veri ekleyebildiğini gördüm. Şimdi bu ikisinin farkı nedir ve ikincisi daha çok hoşuma gitti bana ne gibi artısı olabilir. Birde ben yaptığım projeyi farklı bilgisayarlarda kullanıcam bildiğim kadarıyla sqlconnection ile başka bilgisayarlardanda sunucuyua bağlanabiliyosun ve veritabanını değiştirsende kolayca sunucu adresini değiştirebiliyosun. İkinci yöntemin bu durumda artısı eksisinide merak ediyorum.

    Eğer bu ikisi alakasız farklı şeylerse veya soru mantıksızsa kusura bakmayın yeni yeni öğreniyorum.

    6 Eylül 2020 Pazar 18:09

Tüm Yanıtlar

  • Merhaba, elimden geldiğince anlatmaya çalışayım:

    İki farklı yaklaşımı ele alalım birincisi SQL cümleleri kendimiz yazdığımız/yazacağımız bir tasarım, diğeri ise  SQL cümleleri elimizdeki objelere bakarak oluşturabileceğimiz bir tasarım.

    Her iki sistemin kendine göre avantajları ve dezavantajları var. İlki ile başlayalım,

     SQL cümleleri kendiniz yazmaya başladığınızda(ADO.NET) mesela MSSQL'den PostgreSQL'e geçmeye kalktığınızda yazmış olduğunuz tüm queryleri gözden geçirmek zorunda kalacaksınız. Bazı durumlarda Modeliniz değiştiğinde sql sorgusunu tekrar değiştirmek zorunda kalacaksınız. Yani bu sql cümleleri başınıza bela olacak :) Ancak siz doğrudan veritabanı motorunda yorumlanacak cümleleri ilettiğiniz için program performansı oldukça iyi kalacaktır.

    İkinci senaryoyu ele alalım, 

     Kullandığın dilde tanımlamış olduğun nesnenin runtime esnasında ve derlenirken veritabanı tarafından anlaşılacak sql cümleleri üretiyoruz. Burada model/obje sabit, biz modele bakarak ve/veya ilgili model kullanılarak yazılmış bir programatik sorguya bakarak sql cümlesi ürettiğimiz için aynı modele bakarak birden fazla ilişkisel veritabanı ile uyumlu farklı sorgular üretebilme kabiliyetine sahip oluyoruz. Bu bize tek satırlık bir değişim ile veritabanını değiştirmeye imkan tanıyor. Ancak biz senin başta yazacağın sql sorgularını programın çalışma zamanında modele/objeye bakarak oluşturduğumuz için runtimeda bir performans kaybından söz etmemek (çoğu dil için ) mümkün değil.

    Tabi performans olayına da en hızlısı en iyisi diye bakmamak lazım durumu değerlendirmeyi bilmek gerek. İki şehir arasında 40 kişi taşıyacaksın ferrari 30 dk da gidiyor ama aynı anda 2 kişi taşıyor, otobüs 4 saatte gidiyor ama 40 kişi taşıyabiliyor. :) (Böyle örnekler vermeyi de hiç sevmem :D )

    Şimdi .NET ortamında bilinen en ünlü ORM(Object Relational Mapping) Entity Framework'tür.

    SQLite, MSSQL, MySQL, PostgreSQL gibi bir sürü ilişkisel veritabanına destek veriyor. Artık EF'yi incelemekte sana kalsın. Database-First , Code-First gibi yaklaşımlar vardır. Database-First kısmında EF gidip veritabanına bakar ve veritabanından elde ettiği veriyle modelini oluşturur.

    Code-First'te ise sen modelini belirlersin DB'yide sorgularıda EF ye bırakırsın ki bence (çoğu durumda) en makul seçenek budur.

    Kolay gelsin :)

    6 Eylül 2020 Pazar 20:19
  • Bu konuda cok uzun sayfalar yazilabilir (yazildi da), ama cok kisa ve gayriresmi aciklamasi:

    Birisi iliskisel digeri nesneye yonelik.

    Notlar:

    -Birisini kullaniyorsaniz, digerini de kullanamazsiniz diye bir sey yok. Hatta bazen ozellikle kullanmalisiniz (ornegin, EF kullaniyorsunuz ancak belli bir filtreye bagli olarak tonlarca kaydi sileceksiniz, ya da guncelleyeceksiniz, o zaman bu isi EF ile tek tek yapmak yerine bir SQL ile tek seferde yapmak isyeceksiniz - tabii ADO.Net kullanmadan, EF bu isi dogrudan EF ile yapmanizi destekliyor, o nedenle teknik olarak hep EF kullaniyor sayilirsiniz.

    -Nesneye yonelik (ORM serisi) olanlar icerisinden EF tek degil. Baskalari da var (dapper, nHibernate, Linq To SQL ...).

     


    Blog
    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekali arkadasi Idris bu mesaja da atlayip ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdigimi, yardim etmeye calistigimi sorgulamaktir. Bu beyinsiz zavalliya, aptal oldugunu hatirlatmayi unutmayiniz.



    6 Eylül 2020 Pazar 20:33
    Yanıtlayıcı
  • Şimdi sen bir Form oluşturacağında yeni form deyip sol taraftan sürükleyip bırakıp güzelce arayüz yapıyorsun ya, ona Windows Forms adı veriliyor. Bu windows forms dediğimiz şey aslında UI (arayüz) kütüphanesi dediğimiz hazır bir ürün. Bu arkadaşlar senin yerine bu arayüzü oluşturacak kodları yazarlar. Aksi durumda Windows ile konuşup tüm arayüzü kodla yapman gerekirdi. 

    Aynı kolaylık veri tabanı işlemleri içinde sağlanmış durumda, bu çözümlere genel olarak ORM diyoruz (olaya çok basit bakarsak). Entity Framework'da bunlardan bir tanesi. Senin tek tek uğraşacağın işlemleri kendisi yapıyor. Bence yeni başlayan birisinin bir ORM çözümü ile başlaması gerekir. Daha sonra uzmanlaştıkça kaputun altına bakmaya başlarsınız. Bu yapılmadığında genellikle büyük güvenlik açıkları bırakılıyor.



    www.cihanyakar.com


    6 Eylül 2020 Pazar 20:35