लागू करने के लिए मैं एक एमवीवीएम एप्लीकेशन बना रहा हूं। मैं इस तरह अपने आवेदन की संरचना करने के कोशिश कर रहा हूँ:एमवीवीएम और लेयरिंग, सर्विस लेयर
मैं अगर इस दृष्टिकोण MVVM में आम है पता नहीं है। वैसे भी, ViewModel सेवा परत का उपयोग करता है, उदाहरण के लिए मॉडल या अवलोकन योग्य को पॉप्युलेट करना, यह लपेट रहा है।
IService service;
क्योंकि मैं Linq का उपयोग डेटाबेस क्वेरी करने के लिए, मैं संस्थाओं मेरे डोमेन के रूप में है कि एक ही नाम है: अपनी सेवाओं का उपयोग करने के लिए, ViewModel एक क्षेत्र है कि, सेवा का एक अमूर्त रखती है तो तरह है नाम। ViewModel को सेवा परत/डेटाबेस इकाइयों से अनजान होने दें, मुझे एक लिंक उत्पन्न डेटाबेस इकाई के बजाय एक डोमेन मॉडल वापस देने के लिए सेवा परत की आवश्यकता है। मुझे लगता है कि निम्न कार्य करके (एक कुछ के उदाहरण मैं काम पर पर काम कर रहा हूँ) कार्य करें:
- यह एक अच्छा है:
ObservableCollection<ItemTypeViewModel> GetItemTypes() { DataContextLocalDB dc = new DataContextLocalDB(); ObservableCollection<ItemTypeViewModel> itemTypes = new ObservableCollection<ItemTypeViewModel>(); foreach (ItemType itemType in dc.ItemTypes) { Models.ItemType type = new Models.ItemType(); type.Name = itemType.Name; type.Description = itemType.Description; ItemTypeViewModel itemTypeViewModel = new ItemTypeViewModel(type); itemTypes.Add(itemTypeViewModel); } }
मैं दुखी/को लेकर अनिश्चित हूं चीजों के एक जोड़े हैं एमवीवीएम के साथ संयोजन में संरचना का तरीका?
- मुझे मॉडल्स का उपयोग करने के लिए मजबूर किया गया है। यह टाइपटाइप डेटाबेस से आने वाले आइटम टाइप से अलग करने के लिए मजबूर है। क्या यह अपरिहार्य है?
- मैं एक अवलोकन करने योग्य चयन वापस दे रहा हूं - शायद कुछ और वापस देने के लिए बेहतर होगा और फिर कहीं भी मैंने एक अवलोकन करने योग्य चयन वापस कर दिया है?
- बस सामान्य रूप से, क्या सुधार किया जा सकता है या मैंने जो निर्णय देखा है, उसकी गलती क्या हो सकती है?
धन्यवाद :-)
हाँ, मैं L2SQL के बारे में पता: एक अन्य वर्ग
अंत में बनाएँ। एंटिटी और डोमेन मॉडल के बारे में, क्या आप कहते हैं कि मैं एक डोमेन मॉडल रखने दे सकता हूं? एमवीवीएम के बारे में कई उदाहरणों में मुझे लगता है कि लोगों के पास एक मॉडल है जो वे वापस लौटते हैं, इस तरह कुछ: 'foreach (this.db.Person में व्यक्ति व्यक्ति) {this.persons.Add (नया व्यक्ति दृश्य देखें (व्यक्ति));', जहां व्यक्ति है एक डोमेन मॉडल, एक इकाई नहीं। व्यक्ति डोमेन मॉडल जैसा कि वे एनीमिक कहते हैं। यदि कोई इकाई के समान है तो उसके पास डोमेन मॉडल क्यों होगा? – TheDude
यह वही है जो मैं कह रहा हूं। क्यों वे किसी भी आवश्यकता के लिए वस्तुओं की नकल कर रहे हैं - उनसे पूछो! ;) –