2008-08-30 16 views
1

Bir DataSet ne kadar temsil etmelidir? Bir sipariş sistemi örneğini kullanarak: Siparişinizi gösterirken, en popüler öğelerinizin bir listesinin yanı sıra sizinkilerden birine benzer öğelerin bir listesini de gösteririm. Öğeleriniz, geçmiş siparişleriniz, tercih edilen tedarikçileriniz ve bir müşteri olarak sizinle ilgili diğer çeşitli bilgileri içeren bir ilişkiler ağında dolanırken, diğer öğeler de aynı ilişkilere sahip değildir. Sizi temsil eden şeyler kümesinde gezinmek için kullandığım sorgu kümesi, bu diğer öğeler listesinden biri için kullandığım sorgulardan farklı.Bir DataSet ne kadar temsil etmelidir?

Eğilimim, farklı türlerde ilişkiler için farklı DataSet'ler oluşturmak, ancak ondan sonra on tane DataTable öğesi oluşturuyor ve bu yanlış görünüyor. Daha büyük bir DataSet'i başlattığımda, yalnızca yanlış görünen küçük bir alt kümeyle ilgilenmeme rağmen ve bunların tümünü bir DataSet'e paketlemeye çalıştığımda, birbirinin yanında birkaç öğe tablosuyla büyük bir dağınık görünen bir şeyim var ve ben Eminim ki yanlış.

Belki de DataSets'in ilişki özelliklerini aşırı değerlendiriyorum ya da belki de bazı yönlendirme kullanabilmem için kendimi aşmam gerekiyor.

cevap

1

Bu yüzden veri kümelerini kullanmıyorum. Güçlü bir şekilde yazılan veri kümeleri kullanırsanız, güçlü yazımdan yararlanırsınız, ancak kod bölümüyle ilgili bir kısmını ve genişletilebilirliğini kullanıyor olsanız bile, bir tane oluşturmak için harcayacağınız zaman için ödeme yaparsınız. Var olanı değiştirmek ve bir satır tanımını değiştirmek isterseniz, kod satırında "av tüfeği" kopuşları oluşturacak ve yeni bir satır eklemek için her tanım artık derlenmeyeceği için değiştirilmelidir. Yukarıdaki senaryodan kaçınmak için en mantıklı yaklaşım genellikle mantıklı yeniden kullanımdan vazgeçmektir. Her amaç için ve kullanım başına bir veri kümesi tanımlayın. Ancak bununla ilgili asıl sorun API kullanımıdır, başka bir veri kümesine hassar olan veri kümesiyle sonuçlanırsınız, ancak farklı bir veri kümesi türü olduğundan, hem acı hem de belirsiz olan ortak API'yi kullanmak için dönüştürmeniz gerekir.

Ayrıca, güçlü yazılan veri kümelerinin kodunuzu hor görünmesi (tip bildirimlerinin uzunluğu), veri kümelerinden vazgeçmem ve bunun yerine iş nesnelerine geçmemenin nedenleridir.

4

DataSet çok fazla abartılıyor ve aşırı kullanılıyor. Güçlü yazılan koleksiyonları kullanın (teşekkürler, jenerikler ve otomatik özellikler!). Kek üzerine krema olarak, LINQ ile artık özel nesnelerinize karşı harika bir sorgulama yapabilirsiniz. özel nesneler karşı veri setleri üzerinde

İyi Esposito madde:

http://msdn.microsoft.com/en-us/magazine/cc163751.aspx

Otomatik özellikler: En nesnelerle

http://weblogs.asp.net/dwahlin/archive/2007/12/04/c-3-0-features-automatic-properties.aspx

LINQ:

http://blogs.msdn.com/wriju/archive/2006/09/16/linq-custom-object-query.aspx