LINQ kullanırken (özellikle, LINQ-to-entities) MVC'yi uygulamak istiyorum. Bunu yapmam, Denetleyicinin LINQ kullanarak sonuç kümesini oluşturmasını (veya üreten bir şeyi çağırmasını), ardından verileri görüntülemek için View'a döndürmesini sağlamaktır.Anonim türleri döndürmek için basit bir yol (LINQ kullanarak MVC'yi oluşturmak için)
return (from o in myTable select o);
Tüm sütunlar, veritabanından istemiyorum bile olanları (potansiyel olarak onlarca) okunmaktadır: Ben yaparsam sorun vardır. Ve - daha önemlisi - Böyle bir şey yapamaz yapabilirsiniz :
return (from o in myTable select new { o.column });
anonim türleri tip-güvenli hale getirmek için bir yolu yoktur çünkü! Eminim 3.5 (this temiz değil ...), bunu yapmak güzel, temiz bir yolu yoktur, ama 4.0 hakkında ne? Planlanmış, hatta teklif edilen bir şey var mı? gibi bir şey olmadan ördek yazarak-for-LINQ veya tip-güvenli anonim dönüş değerlerinin (o derleyici kesinlikle bu kapasitede olmalıdır bana öyle geliyor), temiz adlı Kontrolörü ayırmak neredeyse imkansız gibi görünüyor.
Bir orm ile çalışırken, sql'in bir tablonun tüm sütunlarını seçmesi düşüncesine alışmanız gerekir. Sadece birkaçını seçen sorgular yazarsanız, ilk etapta sql'yi de kullanabilirsiniz. Nesnelerinizde düzinelerce mülkünüz varsa, o zaman probleminiz budur. Nesneleriniz daha küçük olmalı ve bunu nasıl düzeltebileceğinizi düşünmelisiniz. Anonim tipler, özellikle bir görünüm için model olarak değil, etrafından geçirilmemelidir. –
@Mattias: Maalesef hayat çok kolay değil. Örneğin, bir iç LINQ sorgusu kullanılarak seçilen bir nesne dizisi dahil olmak üzere, farklı tablolardan birkaç sütun seçtiğim durumu düşünün. Bildiğim kadarıyla, bunu tek bir EF nesnesi olarak geri döndürmenin bir yolu yoktur - yeni bir tip olması * ve bu tür her sorgu için yeni bir beton türü tanımlamak gülünç bir şekilde hantaldır. –
Bana oldukça kötü bir modelin olduğu gibi geliyor. Nesnenin ihtiyacı olan referanslara sahip olması gerekir ve EF'de "Include()" yöntemini (bu verileri hevesle yüklemek için) kullanabilirsiniz. Verileri farklı tablolarda farklı sütunlar olarak düşünmekten vazgeçerseniz ve modeliniz hakkında daha fazla bilgi (daha fazla OO) ile çalışmak daha kolay olacaktır. Alt satır: Anonim tiplerin etrafından geçme ihtiyacı duyuyorsanız, büyük olasılıkla yanlış bir şey yapıyorsunuz demektir. Yansıma tabanlı bir senaryo haricinde –