SORU
19 Ocak 2009, PAZARTESİ


't Etmeniz SQL noktasını kaçırmak değil mi? 't değil ORM-mappers (vb Subsonik.) sub-optimal çözüm?

Toplumun Seri hakkında bazı düşünceler üzerinde Sql ve diğer ORM mappers etmek istiyorum.

Seviyorum Etmeniz için Sql ve fikri ifade veri erişim mantığı (ya da CRUD işlemleri genel) yerel kalkınma dili yerine sahip anlaşma olan "empedans uyumsuzluğu" arasında C# ve SQL. Örneğin, bir iş katmanı için Etkinlik örnekleri ObjectDataSource uyumlu bir listesini döndürmek için kullanılır.

return db.Events.Select(c => new EventData() { EventID = c.EventID, Title = c.Title })

Ben bu hayata kullanarak eski SQL-C# yapıları, ederdim oluşturmak için bir Komut sınıfı, add Kimliği parametre (kullanarak bir dizeyi tanımlamak için "@Kimliği" değişken) ekleyin SQL sorgu dizesi için Komut sınıfı, yürütme komutu, ve o zaman kullanın (dökme tipi)nwReader["Alanadı"] Çek döndürülen her alanına değer atamak için bir üye, yeni oluşturulan örnek benim EventData sınıf (iğrenç).

Yanibuinsanlar neden Seri/Sesaltı/etc. ve ben de buna katılıyorum.

Ancak, büyük resimde yanlış olan bir takım şeyler görüyorum. Hislerim Microsoft da yanlış bir şey görür ve o 4 ** ve insanlar Varlıkları için Seri hareket etmeye çalışıyorlar neden olmasıdır. Sadece Microsoft olduğunu düşünüyorumkötü bir bahis üzerine iki katı.

Yanlış nedir?

Sorun yok architecture astronauts, özellikle de Microsoft, kim bak Etmeniz için Sql ve fark edilmez bir gerçek veri yönetim aracı: orada hala birçok şey yapamazsınız kolayca rahat C# ve amacıbunu düzeltmek.Bu Varlıklar, Seri revolutionary doğa ile ilgili blog gönderilerini ve LinqPad challenge hatta bu Seri arkasındaki emelleri tecelli görüyorsunuz.

Ve sorunbubu SQL sorunu. varsayar olduğunu Yani azaltmak amacıyla hafif bir rahatsızlık (empedans uyumsuzluğu arasında SQL ve C#), Microsoft önerilen eşdeğer bir uzay elbisesi (tam izolasyon) yara bandı (Seri SQL veya benzer bir şey) yapacağını gayet iyi.

Görebildiğim kadarıyla, geliştiriciler ilişkisel model master ve akıllıca geliştirme çabalarını uygulamak oldukça zekidir. Hatta, daha ileri gidip, Sesaltı, vb SQL için olan Seri diyebilirim.zaten çok karmaşık:öğrenme eğrisi o kadar kendisini SQL hakim olmaktan farklı değil. Bu yana, yakın gelecekte, geliştiricilergerekirusta SQL ve ilişkisel model, şimdi öğrenme karşı karşıyayızikisorgu / dil CRUD. Daha da kötüsü, Seri genellikle zor test (yok mu bir sorgu penceresi), kaldırır bizi bir katmandan asıl işi biz yapıyoruz (oluşturur SQL), ve çok sakar desteği (en iyi) için SQL yapıları gibi Tarih işleme (örneğin, Ta), "Sahip olmak" ve hatta "Grup".

Alternatif nedir? Şahsen, Varlıkları bu Seri gibi veri erişimi için farklı bir model istemiyorum. Sadece Visual Studio içinde bir pencere açılır ve benim SQL girin doğrulamak, ya da bir C oluşturmak tamamlamak için bir düğmeye basın tercih ederim# sınıf Ara saklanması için. Zaten SQL biliyorum bu yana, sadece böyle bir şeye girmek olmaz

Select EventID, Title From Events Where Location=@Location

ve sonunda bir EventData sınıfı) içerir Kimliği ve Başlık alanları gibi özellikleri ve B) sahiptir, bir fabrika yöntemi alır bir 'Yer' string argüman olarak ve oluşturduğu Listesi<EventData>? ... Bilemiyorum iyi düşün hakkında nesne modeli (yukarıdaki örnekte belli değil uğraşmam ama temel yaklaşımı hala SQL kullanarak süre ortadan empedans uyuşmazlığı temyiz için bana bir büyük anlaşma.

Soru: yanılıyor muyum? Microsoft SQL / ilişkisel veri yönetim daha fazla öğrenmek zorunda değilsiniz, böylece SQL altyapısını yeniden yazmak gerekir?Olabilironlar bu şekilde SQL altyapısını yeniden? Veya SQL üst parametreleri ayarlama ve veri alanlarına erişim ağrı ortadan kaldırmak için çok ince bir tabaka oldukça yeterli olduğunu düşünüyor musunuz?

GüncellemeOnlar sonra ne olduğum önemli yönlerini yakalamak bence, çünkü üst iki bağlantıları teşvik etmek istedim. İlk olarak, CodeMonkey başlaması için gereken bir Madde "The Vietnam of Computer Science." başlıklı puan ama çok ilginç bir okuma. Joel spolsky Serkan Utku Öztürk daha önemli parçalardan biri için ikinci, AnSGri noktalar: The Law of Leaky Abstractions. Tam olarak konu üzerinde ama yakın ve büyük bir okuma değil.

Güncelleme 2: "" çok büyük cevaplar ve seçimi olmasına rağmen ocdecio için "doğru" cevap kafanda. cevap verdim Bu durumda, onun cevabı teknoloji mevcut durumu göz önüne alındığında, gerçekten en iyi yöntem olduğunu düşünüyorum ne ile bağdaşmaz. Bu tamamen gelişmeye beklediği bir alandır, ancak, işler değişebilir. Emeği geçen herkese teşekkür etmek istiyorum, düşünceli bir cevap verdi bence herkes upvoted ettik.

CEVAP
19 Ocak 2009, PAZARTESİ


Bana boyalı-in-the-yün veritabanı biri olduğumu söyleyerek başlamak istiyorum.

Bir brüt aşırı genellemeGeliştiriciler SQL bilmiyorum. Geliştiriciler gerçekten yokistiyorumbilmek SQL. Bunu yazabilirler, tablo tasarım olabilir, ama onlara iğrenç hissettiriyor. Gerekli sorgu basit bir birleşim daha fazla zaman aptalca şeyler yaparlar. Zahmet etmiyorlar çünkü geliştiriciler aptal olduğundan değil. Onlargibionlar sadece bir kavram alanı ile uğraşmak zorunda; tablo ve nesneleri geri hareket eden bir bağlam olduğu bir dünyada yaşamak anahtarı için ödeme sevmezler fiyatı.

Bu kötü ya da yanlış olduğu anlamına gelmez; iyileştirme için bir fırsat var demektir. Eğer müşterilerinizin (bu durumda, geliştiriciler çerçeve kullanarak) SQL ve tablo gibi değil eğer ... onları kalbinde yatan bu karmaşa ile uğraşmadan almak sağlayan soyut bir katman vermek.

Otomatik bellek yönetimi / atık toplama büyük bir hit yapan aynı mantık. Evet, geliştiriciler ile başa çıkabilirim; evet, o olmadan daha iyi optimize edilmiş bir kod yazabilirler; ama uğraşmak zorunda değil, onları daha mutlu ve daha verimli hale getirir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alan Fullmer

    Alan Fullmer

    3 EYLÜL 2010
  • Jeb Corliss

    Jeb Corliss

    17 Kasım 2006
  • Kim Barbin

    Kim Barbin

    3 Mayıs 2012