8 Mayıs 2014 Perşembe

Makale: Ado.Net - Disconnected yapılarda Typed DataSet'lerin yerini hiçbir şey dolduramaz!

Özellikle Entity Framework'e bu kadar heveslice ve hızla geçişimiz bizim bilgi yetersizliğimizin bir göstergesi olarak görmekteyim. Entity Framework aslında güzel bir yapı olmasına rağmen sürekli Ado.Net nesneleri karşısında yetersizliği ile bizi daha dikkatli davranmaya çağırıyor.

Bu yazımda Ado.Net'in önemli bir özelliği olan ve yeri dolmayan Typed Dataset konusunu ele alacağım.

Typed Dataset kelime anlamıyla tipli veri kümesi demektir. Tipli oluşu gelebilecek nesnenin tipini ve durumunu önceden bilmemiz ile alakalı. Entity Framework de daha doğrusu bir nesnenede bunu başaramıyormuyuz, elbette ama kısmen. Eğer Sql Server kullanıyor ve varchar(30) luk bir alanınız varsa üzgünüm bunu karşılayacak nesne string dir ki sınırını belirlemeniz mümkün değil.

Bu durumu çok önemsemiyorum lakin asıl önemli husus daha farklı. Bir dataset içerisinde DataTable'ler bulunur. Bunlar verilerin tablo olarak tutulduğu yerdir. Tablolar satırlardan, satırlar da sütunlardan oluşur. Ayrıca tabloları birbirine bağlayan ilişkileri (relations) unutmamak lazım. Tümleşik bu yapının yerini nesneler kısmen doldurabiliyor. Ancak iş disconnected olarak uzun süre verilerin üzerinde işlem yapmaksa bu husus bu yazının asıl konusu oluyor.

Disconnected olarak uzun süre bir Dataset (veya DataTable) üzerinde işlem yapıyorsanız satırların üzerinde değişiklik yapmışsınız anlamına gelir. Eğer bir nesne kullanıyor (ki bunun tabloya karşılık gelebilmesi için en basiti bir liste içerisinde nesne örnekleri vardır) iseniz kayıtlar üzerinde değişiklik yani nesnenin propertylerinde değişiklik yapmaya çalışırsanız ilgili kayıtlar SQL Serverden kayıtları tekrar okumadan (veya nesnenin bir kopyasını bulundurmuyorsanız ki hangi kaydı güncellediğinizi bilmeniz de başlı başına bir konu) asla bilemeyeceğiniz anlamına gelir.

DataRow tipinin en önemli özelliği olarak tabir edeceğim RowState Enumeratorudür. RowState bir satırın durumunu belirler, bu orijinal, yeni eklenmiş, düzenlenmiş ve silinmiş olabilir. Bir DataTable'dan RowState değerine göre satırları da almanız mümkün. Bu durumda uygulamanız anlık kayıt güncellemesi yapmıyor ise nesneler ile başınız dertte demektir.

Kısacası Typed Dataset'lerin bir çoğu faydasını sayabilsekde şu anda değindiğimiz bu husus bile ciddi ciddi iş planınızda göz önüne alacağınız bir husus olmalı.

Bir sonraki yazımda görüşünceye dek esenlikle kalın...

0 yorum: