Bu yazımda veritabanı okuması, ön bellekleme ve kelimelerin bulunması için sorgu yapısına değineceğim.
Projemizin adresi olan fantom.codeplex.com adresi üzerinden "Source Code" tabına geçin. Buradan "FantomData" klasörü altındaki "DataManager.vb" dosyasını açın.
Standart veritabanı işlevleri gören sınıfımız bunun yanı sıra ön bellekleme (caching) işlevlerini ve dinamik sorgu oluşturmayı da yapmaktadır. New fonksiyonu ile yeni oluşturulan sınıfımıza konfigurasyon yönetimi sınıfımızın bir örneğini oluşturup konfigurasyon dosyamızı geri serileştirme yapıyoruz. m_Config değişkenimize konfigurasyon bilgilerini doldurduktan sonra m_Connection değişkenimizi de konfigurasyonda belirtilen veritabanı bağlantısına göre yapılandırıyoruz.
GetKeyValue adında tek fonksiyonu olan sınıfımızda tüm dil işlemlerini üstlenmektedir. İki parametre alan fonksiyonun ilk parametresi grup adı, ikinci parametresi ise dile ait anahtar değerdir.
İlk olarak fonksiyonumuz HttpContext üzerinden web arabirimine erişip cache sınıfında grubumuzun bir örneği olup olmadığını kontrol etmektedir. Grubumuza ait bir tanım yok ise dinamik olarak konfigurasyondan gelen tablo ve alan adları bilgisine göre sorguyu yapılandırıp oluşturduğu command nesnesi ile tabloya yükleme yapmaktadır. Yükleme işlemi sonucunda bu bilgiyi grup adıyla birlikte yine ön belleğe attık.
Tekrar if bloğuna dönerek eğer ön bellekte grup tanımı var ise direk olarak "DataTable" nesnemize ön bellekten atama yapıyoruz.
İkinci if bloğu ise eğer oturum bilgisi üzerinde dil tanımı yapılmışsa _culture değişkenine atama yapıyor. Burada tabi ki varsayılan dil olarak "en-US" seçili. Son olarak bir linq sorgusu ile dil, anahtar değer eşleşmesiyle kelimeyi seçtiriyoruz. Son if bloğumuzda kelime bulunmamış ise geriye hiç döndürürken bulunduğunda geriye kelimeyi döndürtüyoruz.
Fonksiyon public olarak tanımlanmasında ki gaye Expression tabanlı kullanmak istemediğiniz durumlarda fonksiyonel olarak da kelimeleri alabilmenizi sağlamaktır.
Diğer yazımda expression üzerinden nasıl okunacağına bakacağız.
Esenlikle kalın...
0 yorum:
Yorum Gönder