LinqToSql'de DataLoadOptions Sınıfının Kullanımı ve Özellikleri

Eyl 06, 2013

Linq to SQL, veri erişim işlemini daha kolay ve anlaşılır hale getirme amaçlı bir teknolojidir. Bu teknolojide ilişkili tabloların birinden bir nesne yüklendiğinde, diğer tablodaki verilere erişmek mümkündür; ancak Linq to SQL ile kullanılan sınıflardan DataLoadOptions Sınıfı’yla da hızlı veri yükleme ve ilişkili verileri süzme sağlanır. Bu sınıf bir çok metoda sahiptir; ancak  bunlardan en sık karşılaşılanlar GetType ve LoadWith(LambdaExpression) metodlarıdır.

  • GetType Metodu: .Net Framework ile gelen bütün sınıflar Object sınıfından türetilmektedir. Object sınıfından türetilen nesnenin türü Object sınıfının GetType() metodu ile öğrenilir. GetType() Metodu "static" değildir ve dönüş değeri tipi System.Type dır. Type nesnesi, var olan Object sınıfıyla ilişkili başka veriler ortaya çıkartır.
  • LoadWith Metodu: Lambda ifadesini kullanarak ana hedefteki veri ile ilişkili verileri okumak için kullanılır. Örnek olarak SQl Server Management Studio’da oluşturulan Kisi ve IletisimBilgisi ilişkili  tablolarından linq teknolojisiyle kişilerin ad,soyad ve gsm bilgilerinin elde edidiği Web sayfası uygulaması vardır. IletisimBilgi tablosundan gsm verilerinin gelmesi için ikinci bir T-SQL sorgusu veritabanı sunucusuna gönderilir. Eğer tek bir "select" sorgusuyla esas nesneyle ilişkili verilerin aynı anda hemen elde edilmesi istenirse DataLoadOptions Sınıfı'nın LoadWith Metod'u kullanılır.
Performans olarak iki select sorgusu daha uygun olsa da DataLoadOptions Sınıfı veriye erişimin daha hızlı gerçekleşmesini sağlar. Sonuç olarak, her Kisi varlığının IletisimBilgisi özelliğinin, her IletisimBilgisi varlığı için verinin ertelenmeden hemen alınmasını sağlamaktadır. 

using System.Linq;
using System.Data.Linq;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
       {
        if (!IsPostBack)

            VeriBagla();
    }
    protected void VeriBagla()

       {
        DataClassesDataContext db = new DataClassesDataContext();
              DataLoadOptions LoadOp = new DataLoadOptions();

        LoadOp.LoadWith<Kisi>(c => c.IletisimBilgisi);
        db.LoadOptions = LoadOp;

        var sorgu = from o in db.Kisis
                    where o.silindi == false
                    select o;

        rpListe.DataSource = sorgu.ToList();
        rpListe.DataBind();
    }
}