2009-09-30 17 views
9

Hızlı sorular gerçekten.ASP.NET MVC - ViewModel olarak Varlıklar modeline Linq - bu iyi uygulama mı?

Şu anda asp.net MVC ve varlık framework kullanarak bir site inşa ediyorum. Varlıkları veya varlık listelerini döndüren birkaç deponum var. Sayfalarımın çoğunda, çeşitli ilgili tablolardan veri almam gerektiğini buluyorum. Sorgularımda 'içerme' kullanarak ilgili varlıkları yüklediğim sürece bu sorun değil, ama bu iyi uygulama mı?

İhtiyacım olan şeyleri görüntülemek için yalnızca 5 - 6 tablo derinliğinde olan bir nesne grafiğini çekmekle, ihtiyaç duyduğum bilgilerin yalnızca bitlerini içeren özel bir viewmodel nesnesi oluşturmak daha iyi olur mu? görüşüne

Özür Bu soru çok fazla mantıklı değil eğer. Ben manken burada nasıl kullanılması gerektiğini :)

Teşekkür

+0

İyi soru, cevabı duymak isteyecektir. – Paddy

+0

1, yerine varlık modellerinin DTOs kullanmayla ilgili benzer bir soru vardı: http://stackoverflow.com/questions/1450209/is-my-asp-net-mvc-application-structured-properly – Brandon

+0

Teşekkür Brandon - sadece okumak Gönderiniz ve evet, benzer şeyler hakkında endişe duyuyoruz gibi görünüyor. Bazen en iyi uygulama hakkında endişelenmek için çok fazla zaman harcadığım için endişeleniyorum :) – Sergio

cevap

2

senin denetleyicileri içinde görünümlerinde render kodu ve gönderme kodunu gözden öneririm temelden yanlış olabilir. Aldığınız yaklaşımla aşırı derecede karmaşık mı? Eğer değilse, şeyleri olduğu gibi tutmak için muhtemelen tamam. Görünüm ve denetleyici kodu, özel bir görünüm modeli sunarak büyük ölçüde basitleştirilecekse, bir tane oluşturmayı düşünün. Özel görüntüleme modelleri, büyük olasılıkla şu anda başka bir yerde ele alınan karmaşıklıklardan bazılarını soyutlamaktadır. görüşleriniz

<% foreach (var order in Model.Orders.Any(x => x.Products.Any(p => p.Category == "xx")) %>

gibi şeyler yapıyor başlatırsanız

+0

Mantıklı. Temel olarak, benim varlık modelimden çeşitli 'tablolar' çekiyorum bir durum var. Organisations-> binayı> Rooms-> Varlıklar. Bir Varlığın ayrıntılarını görüntülediğimde, oda ve bina bilgisini de göstermem gerekiyor. Şu anda büyük bir grafik çiziyorum ve manzarada ihtiyacım olan şeyleri çekiyorum. Modelden çok fazla geri getirdiğim için endişelendim. Ama .... işe yarıyor. – Sergio

3

o zaman kesinlikle ViewModel gerekiyor. Eğer sihirli dizeleri İsterseniz

ViewData["flattened_orders"]

ile gidebilir, ama öyle şüpheliyim.

Daha sonra, varlıklarınızın üzerinde ihtiyaç duyduğunuz sunum özniteliklerinin bir sorusu var, daha sonra model binderinin çalışabilmesi için üzerlerinde tüm özellikleri göstermeniz gerekir ... daha sonra, ülkeler listesi gibi ek sunu amaçlı bilgilere ihtiyaç duyarsınız ...

Yani, basit uygulamalar için, size ViewModel atlayabilirsiniz. Ama basit uygulamalar için aslında benzer bir sorun hakkında this yazı gibi Response.Write ve yine manuel SQL, ;-)

yapabilirsiniz. Burada gösterilen yaklaşım ilk başta çok "akademik" görünebilir, fakat gerçek projelerden ve ASP.NET MVC'sinden ne kadar çok olursa onu daha çok seviyorum ve ona yaklaşıyorum.

+0

teşekkürler, bu iyi bir tavsiye.İhtiyacım olanı elde etmek için bir dizi varlık ilişkisinde gezinmek zorunda olduğumu ve verileri daha iyi düşünmeye başladığımı daha iyi buluyorum. – Sergio

İlgili konular