none
ADO.NET,Entity Framework,Ling to Sql Bunlar tam olarak nedir, farkları neler ? RRS feed

  • Soru

  • ADO.NET,Entity Framework,Ling to Sql bunların birbirlerinden farklı nedir. Hangisi ile en profesyonel kod yazılır. Hangisi daha performanslı çalışır, neden ayrılmıştır. Büyük , çok fazla hitli bir site için yada çok çok kullanılan bir program için hangisi ile yazmak doğrudur. Kod örnekleri ile farklarını gösterebilecek var mıdır ? Forma bir button atıp , code behind da , 

    SqlConnection con = new SqlConnection("");
    SqlCommand com = new SqlCommand("insert into tablo Alan Values("Alandeğer")",con);
    con.open();
    com.execetunonguery();

    gibi bir veritabanı işlemi yada , 

    Button btn = new Button();
    btn.......

    yada bir class oluşturup bunda bazı işlemler yaparak kullandığımızda , class örneği

    Public String Cevir(string deger)
    {
    
    deger = deger.replace("ş","s");
    deger = deger.replace("ğ","g");
    
    return deger;
    }

    bu olsun, kullandığım yer 

    Cevir("ğşğşğş");

    burası olsun bu şekilde kullanayım, 

    codebehind da 

    int a;
    if(a == 1)
    {
    response.write("Bir");
    }
    else 
    {
    response.write("İki");
    }
    
    strin alan = "1,2,3,4,5,6,7,8";
    string[] alanlar;
    
    alanlar = alan.Split(',');
    
    Foreach(string item in alanlar)
    {
    response.write(item);
    }
    
    for ....
    
    while .....
    gerektiğinde bu döngüleri kullanayım bu , bunlardan hangisine girer.Bu yazım şekli ado.net mi, entity frameworkmu,ling to sql mi olur ? Bu şekilde , gösterdiğim örneklerle belirttiğim şekilde yazdığım programlardan , web projelerinden ne kadar verim alabilirim düzgün yazdığım şekilde büyük hitli bir web sitesi yada bir programı bu şekilde yazabilirmiyim. Açıklayacak biri olursa minnettar kalarım , teşekkürler


    21 Ekim 2012 Pazar 01:25

Yanıtlar

  • Öncelikle şunu söylemek gerekir ki, bir veritabanı bağlantısındaki en önemli komut bence sql sorgunu veritabanına gönderen komut 
    com.execetunonguery();
    ve sonrasında da işlemlerin bittikten sonra veritabanı ile bağlantını kesiceğin komuttur. 
    con.Close();

    eğer bağlantını işlem bitiminde kesmezsen server'ın çakılır. 

    Ado.net teknolojisi bu işlemleri senin için hazır olarak getiriyor. 
    entity framework ile geliştirdiğin bir projede esnek oluyor. diyelim 1 yıl sonra oracle kullanmak istiyorsun. çat hemen sistemini oracle a taşıyabilirsin. eğer bunu kullanmadan geliştirseydin. en basitinden kullandıgın bütün sql bağlantı cümleciklerini değiştirmek zorunda kalıcaktın. 
    He Syntax kolaylığı istiyorum ben diyorsanda, linq to sql kullanıcaksın. 
    Ama bir projede önemli olan katmanlardır, örneğin tasarım katmanı,veritabanı katmanı ve kod katmanı. tasarımını yaparsın, sonra veritabanını oluşturup gerekli stored procedure'lerini yazarsın oluşturursun indexlemelerini yaparsın. sonra geçersin c# tarafına gerekli classlarını yazarsın projeni tamamlarsın. küçük bi proje için değilde gerçekten sağlam bi projede store procedure,class vs. kullanmadan direkt olarak işlemlerin .cs sayfasında yazıldığını düşünemiyorum bile :)  profesyonellik budur işte. herşeyi ayrı ayrı yapmak. yoksa he bi buton at click event'ine de çatur çutur gelişi güzel yaz. bu amatörlüktür. performans'ı sorucaksanda, çalışma tarafında yazdığın kodlarda bi hata yok ise pekte farkı yoktur. ama senin proje geliştirme performansını ve projenin sürdürebilirliği açısından çok çok performanslı olacaktır.

    21 Ekim 2012 Pazar 08:54
  • öncelikle şunun ayrımını yapalım ado.net - entity  framework ve linq  senin sql de varitabaında tuttuğun bilgilere erişmek için kullanacağın  veriye erişim katmanları olarak nitelendirilmektedir bunlara arasından bir seçim yapmak yapacağın işlem için değişecektir  yapıcağın proje ufaksa her eventin altına sql cümlecikleri yazarsın ama iş büyükse burada seçim hakkı yine sendedir örnek olarak  ister sen her click eventinin altına klasik sql bağlantıları da yazarsın veya  bu bağlantıları bir kere yazıp ado.net yapısını kullanırsın yada entity framework katmanını oluşturursun lazım oldukça yazarsın . operformans acısından diyorsan profeyyonel olarak ado.net bağlantılarını klaslarını procedurelerini bir kere yazarsın ve lazım olduğu yerde hemen kullanırsın entity framework e göre daha performanslıdır ancak yaptığın proje bir e-ticaret sistemi olduğunu düşün yaklasık 60 tablon olsun her tablo için bağlantı cümleleri için 60 ayrı class oluşturacaksın ve içerisine metotlarını propertilerini yazacaksın yada ben ado.net için class yazaman delikenlı gibi her eventin altına delikanlı gibi sql bağlantılarımı yazarın procedurelerimi yazarım diyorsan oda yine sana kalmış bişe ama emin ol zamanla sıkılıcaksın en temizi bana sorarsan tabi bu benim fikrim ado.net kullanmaktır ama dediğim gibi orta ölçekli projeler için büyük projeler için entityframework candır. yada oturur ado.net bağlantılarını otomatik yazan bir program yaparsın bu zahmettende kurtulursun.   Yanlış anlama ufak bir video var buradan inceleyebilirsin.   http://www.youtube.com/watch?v=idAKnjWOiR0&feature=g-upl    inceleyebilirsin.
    • Yanıt Olarak İşaretleyen YazılımDevi 24 Ekim 2012 Çarşamba 23:08
    21 Ekim 2012 Pazar 19:16

Tüm Yanıtlar

  • Öncelikle şunu söylemek gerekir ki, bir veritabanı bağlantısındaki en önemli komut bence sql sorgunu veritabanına gönderen komut 
    com.execetunonguery();
    ve sonrasında da işlemlerin bittikten sonra veritabanı ile bağlantını kesiceğin komuttur. 
    con.Close();

    eğer bağlantını işlem bitiminde kesmezsen server'ın çakılır. 

    Ado.net teknolojisi bu işlemleri senin için hazır olarak getiriyor. 
    entity framework ile geliştirdiğin bir projede esnek oluyor. diyelim 1 yıl sonra oracle kullanmak istiyorsun. çat hemen sistemini oracle a taşıyabilirsin. eğer bunu kullanmadan geliştirseydin. en basitinden kullandıgın bütün sql bağlantı cümleciklerini değiştirmek zorunda kalıcaktın. 
    He Syntax kolaylığı istiyorum ben diyorsanda, linq to sql kullanıcaksın. 
    Ama bir projede önemli olan katmanlardır, örneğin tasarım katmanı,veritabanı katmanı ve kod katmanı. tasarımını yaparsın, sonra veritabanını oluşturup gerekli stored procedure'lerini yazarsın oluşturursun indexlemelerini yaparsın. sonra geçersin c# tarafına gerekli classlarını yazarsın projeni tamamlarsın. küçük bi proje için değilde gerçekten sağlam bi projede store procedure,class vs. kullanmadan direkt olarak işlemlerin .cs sayfasında yazıldığını düşünemiyorum bile :)  profesyonellik budur işte. herşeyi ayrı ayrı yapmak. yoksa he bi buton at click event'ine de çatur çutur gelişi güzel yaz. bu amatörlüktür. performans'ı sorucaksanda, çalışma tarafında yazdığın kodlarda bi hata yok ise pekte farkı yoktur. ama senin proje geliştirme performansını ve projenin sürdürebilirliği açısından çok çok performanslı olacaktır.

    21 Ekim 2012 Pazar 08:54
  • öncelikle şunun ayrımını yapalım ado.net - entity  framework ve linq  senin sql de varitabaında tuttuğun bilgilere erişmek için kullanacağın  veriye erişim katmanları olarak nitelendirilmektedir bunlara arasından bir seçim yapmak yapacağın işlem için değişecektir  yapıcağın proje ufaksa her eventin altına sql cümlecikleri yazarsın ama iş büyükse burada seçim hakkı yine sendedir örnek olarak  ister sen her click eventinin altına klasik sql bağlantıları da yazarsın veya  bu bağlantıları bir kere yazıp ado.net yapısını kullanırsın yada entity framework katmanını oluşturursun lazım oldukça yazarsın . operformans acısından diyorsan profeyyonel olarak ado.net bağlantılarını klaslarını procedurelerini bir kere yazarsın ve lazım olduğu yerde hemen kullanırsın entity framework e göre daha performanslıdır ancak yaptığın proje bir e-ticaret sistemi olduğunu düşün yaklasık 60 tablon olsun her tablo için bağlantı cümleleri için 60 ayrı class oluşturacaksın ve içerisine metotlarını propertilerini yazacaksın yada ben ado.net için class yazaman delikenlı gibi her eventin altına delikanlı gibi sql bağlantılarımı yazarın procedurelerimi yazarım diyorsan oda yine sana kalmış bişe ama emin ol zamanla sıkılıcaksın en temizi bana sorarsan tabi bu benim fikrim ado.net kullanmaktır ama dediğim gibi orta ölçekli projeler için büyük projeler için entityframework candır. yada oturur ado.net bağlantılarını otomatik yazan bir program yaparsın bu zahmettende kurtulursun.   Yanlış anlama ufak bir video var buradan inceleyebilirsin.   http://www.youtube.com/watch?v=idAKnjWOiR0&feature=g-upl    inceleyebilirsin.
    • Yanıt Olarak İşaretleyen YazılımDevi 24 Ekim 2012 Çarşamba 23:08
    21 Ekim 2012 Pazar 19:16