2009-09-30 10 views
9

वास्तव में त्वरित प्रश्न।एएसपी.नेट एमवीसी - व्यूमोडेल के रूप में इकाइयों के लिए लिंक - यह अच्छा अभ्यास है?

मैं वर्तमान में एएसपीनेट एमवीसी और इकाई ढांचे का उपयोग कर एक साइट का निर्माण कर रहा हूं। मेरे पास कुछ रिपॉजिटरीज हैं जो इकाइयों की वापसी संस्थाओं या सूचियों की सूची में हैं। मुझे लगता है कि मेरे अधिकांश पृष्ठों में मुझे विभिन्न संबंधित तालिकाओं से डेटा खींचना है। यह ठीक है जब तक मैं अपने प्रश्नों में 'शामिल' का उपयोग करके संबंधित संस्थाओं को लोड करता हूं - लेकिन क्या यह अच्छी प्रथा है?

क्या कस्टम व्यूमोडेल ऑब्जेक्ट बनाना बेहतर होगा जिसमें मुझे आवश्यक जानकारी के बिट्स शामिल हों, या क्या ऑब्जेक्ट ग्राफ़ खींचने के साथ 'गलत' नहीं है, जो आपको केवल 5-6 टेबल गहरी है जो आपको चाहिए आपके विचार में?

क्षमा करें यदि यह प्रश्न बहुत अधिक समझ में नहीं आता है। मैं मूल रूप से गलत समझा कैसे एक मॉडल यहां इस्तेमाल किया जाना चाहिए :)

धन्यवाद

+0

अच्छा सवाल, प्रतिक्रिया सुनने में रुचि होगी। – Paddy

+0

+1, मेरे पास इकाई मॉडल के बजाय डीटीओ का उपयोग करने के बारे में एक समान सवाल था: http://stackoverflow.com/questions/1450209/is-my-asp-net-mvc-plication- संरचित-properly – Brandon

+0

धन्यवाद ब्रैंडन - बस पढ़ा गया आपकी पोस्ट और हाँ, ऐसा लगता है कि हम समान चीजों के बारे में चिंतित हैं। कभी-कभी मुझे चिंता है कि मैंने सर्वोत्तम अभ्यास के बारे में चिंता करने में बहुत अधिक समय बिताया :) – Sergio

उत्तर

2

मैं अपने नियंत्रकों में आपके विचारों में प्रतिपादन कोड और पोस्टिंग कोड की समीक्षा का सुझाव हो सकता है। क्या वे आपके द्वारा उठाए जा रहे दृष्टिकोण से अत्यधिक जटिल हैं? यदि नहीं, तो आप चीजों को रखने के लिए शायद ठीक हैं। यदि कस्टम व्यू मॉडल पेश करके दृश्य और नियंत्रक कोड को बहुत सरल बनाया जाएगा तो एक बनाने पर विचार करें। कस्टम व्यू मॉडल अनिवार्य रूप से उस जटिलता के कुछ अमूर्त हैं जो शायद इस समय कहीं और संभाला जा रहा है।

+0

समझ में आता है। असल में, मेरे पास वर्तमान में एक ऐसी स्थिति है जहां मैं अपने इकाई मॉडल से विभिन्न 'टेबल' खींच रहा हूं। Organisations-> Buildings-> Rooms-> एसेट। जब मैं किसी संपत्ति का विवरण प्रदर्शित करता हूं, तो मुझे इसके कमरे और भवन की जानकारी दिखाने की भी आवश्यकता होती है। फिलहाल मैं एक बड़े ऑब्जेक्ट ग्राफ़ को पकड़ रहा हूं और जो दृश्य में मुझे जरूरत है उसे खींच रहा हूं। मैं बस चिंतित था कि मैं मॉडल से बहुत ज्यादा वापस ला रहा था। लेकिन .... यह काम करता है। – Sergio

3

अपने विचार की तरह

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

काम करने लगते हैं तो आप निश्चित रूप से ViewModel की जरूरत है। यदि आप जादू तार चाहें तो आप

ViewData["flattened_orders"]

साथ जा सकते हैं, लेकिन मैं तो शक है।

फिर, आपकी संस्थाओं पर प्रस्तुति विशेषताओं की एक प्रश्न है, तो आपको उन पर सभी गुणों का पर्दाफाश करने की आवश्यकता है ताकि मॉडल बाइंडर काम कर सके ... तो आपको अतिरिक्त प्रस्तुति-केवल जानकारी जैसे देशों की सूची की आवश्यकता है ...

तो, सरल अनुप्रयोगों के लिए, आप ViewModel को छोड़ सकते हैं। लेकिन सरल अनुप्रयोगों के लिए आप Response.Write और मैन्युअल एसक्यूएल कर सकते हैं, वैसे भी ;-)

मुझे वास्तव में इसी तरह के मुद्दे के बारे में this पोस्ट पसंद है। वहां प्रदर्शित दृष्टिकोण पहले "अकादमिक" प्रतीत हो सकता है, लेकिन यह वास्तविक परियोजनाओं से है, और जितना अधिक मैं एएसपी.नेट एमवीसी करता हूं, उतना ही मुझे यह पसंद है और इसके करीब आ जाता है।

+0

धन्यवाद, कुछ अच्छी सलाह है।मुझे लगता है कि मुझे जो कुछ चाहिए, उसे प्राप्त करने के लिए मुझे कई इकाई संबंधों के माध्यम से नेविगेट करना है और डेटा को चापलूसी करना बेहतर लगता है। – Sergio

संबंधित मुद्दे