WPF uygulamasında EF ile Prism framework kullanıyorum.MVVM + Entity Framework mimarisi karışıklığı
ViewModel:
- hizmeti başvuruları tutar (birlik kabı tarafından aktarılır).
Hizmetler:
- veri tabanı (depo başına tek bir tablo) ile bazik CRUD işlemleri içerir Repository referans tutar verilerle "yüksek seviye" işlemleri sağlanmaktadır.
Deposu: depo
- her metot kısa ömürlü nesne bağlamında çalışmak "kullanılarak" yol kullanır.
Takılı kaldığım yer burası: nesne bağlamı kaldırıldıktan sonra artık eşlenmiş özellikler ile çalışamıyorum. Veritabanımın modeli karmaşık (birçok ilgili tablo) ve veri alınırken çok .Include() çağrıları kod kirli tutar.
Birkaç iş parçacığı okuduktan sonra, "iş birimi" deseninin muhtemelen ihtiyacım olan şey olduğunu keşfettim.
işin (ve dolayısıyla bağlam) birimi referansı tutulmaktadır: Burada
sorumu geliyor? Görünüm başına bağlamı seçtiğimde, viewModel'in bağlam referansı olması gerekir. Hizmet birimime nasıl iş yapabilirim? Veya ViewModel'de yeni bir Hizmet örneği oluşturmalı ve yapıcı parametresinde bağlam mı geçirmeliyim?
Son olarak, bunu aşağıdaki yaklaşımla çözüyorum: Görünüm açıldığında, ViewModel, bağlam ve birkaç hizmetten oluşan UnitOfWork nesnesini oluşturur. Aynı birimdeki hizmetler aynı bağlamda enjekte edilmiştir. View kapalı olduğunda iş birimi düzenlenir. Bu konudaki proje [link] (http://teusje.wordpress.com/2011/10/16/unicornmanager-prism-4-mef-wpf-ef-4-1-code-first-nuget-datavalidation/) ayrıca ilham verici. Teşekkür ederim Daniel. – yurislav