13

के साथ रिपोजिटरी पैटर्न का उपयोग करके कोई भी मदद हाथ दे सकता है? मैं एमवीसी स्टोरफ्रंट के लिए वीडियो देख रहा हूं और इन तकनीकों का उपयोग करके अपनी वेबसाइट बनाई है यानी डीडीडी, रिपोजिटरी पैटर्न लेकिन मैं इकाई फ्रेमवर्क का उपयोग करना चाहता हूं।एंटीटी फ्रेमवर्क (एमवीसी स्टोरफ्रंट)

इंटरफेस में यह IQueryable देता है लेकिन एंटीटी फ्रेमवर्क के साथ मुझे ऑब्जेक्टवर्क को वापस करना चाहिए? - मैं LINQ का उपयोग करूँगा।

इसके अलावा संग्रहीत उदाहरण में यह कुछ ऐसा होता है: IQueryable < श्रेणी > GetCategories();

एमवीसी स्टोर में भी श्रेणी वर्ग एक निर्मित इकाई वर्ग (मानक वर्ग) था, लेकिन इकाई फ्रेमवर्क के साथ इन वर्गों को वस्तु संदर्भ में पूर्वनिर्धारित किया गया है - क्या वे नहीं हैं?

तो मुझे उन्हें बनाने की आवश्यकता होनी चाहिए?

मैं थोड़ा उलझन में हूं। अगर किसी के पास कोई सहायक उदाहरण या कोड है तो यह वास्तव में सहायक होगा।

जैसा कि मैंने कहा है, मैंने linq2sql का उपयोग कर एमवीसी स्टोरफ्रंट से वीडियो देखे हैं लेकिन वास्तव में एंटीटी फ्रेमवर्क का उपयोग करना चाहते हैं।

कोई विचार?

धन्यवाद

लोहार का काम

उत्तर

6

हो सकता है कि अगर आप http://www.asp.net/learn/mvc/#MVC_SampleApp साइट में संपर्क प्रबंधक ट्यूटोरियल देखें, वे भंडार पैटर्न और इकाई की रूपरेखा का उपयोग करें।

+0

टूटी हुई लिंक ....... :-) –

9

मुझे एक समय में आपके प्रश्नों का उत्तर देने के एक दो:

आपका खजाने IQueryable < टी >, नहीं ObjectQuery लौटना चाहिए। कारण यह है कि भंडार पैटर्न का पूरा उद्देश्य अपने डेटा स्टोर के विनिर्देशों को दूर करना है। जब आप अपने नियंत्रकों का परीक्षण करते हैं तो यह आपको नकली भंडार जैसे चीजों को करने की अनुमति देता है। यदि आप रिपॉजिटरी को ऑब्जेक्टक्विटी लौटते हैं, तो आप एंटिटी फ्रेमवर्क को दूर नहीं कर रहे हैं। यह कहने का एक और तरीका यह है कि आपके भंडार के उपयोगकर्ताओं को जितना संभव हो, पता नहीं होना चाहिए, यह एंटिटी फ्रेमवर्क है जो ओ/आर मैपिंग कर रहा है।

आदेश स्टैक ओवरफ़्लो में अनुच्छेद पाठ की तुलना में अधिक है और कम से कम प्रतीकों का उपयोग करने के लिए आपको, जैसा कि आप HTML में होगा उन्हें पलायन करना होगा अर्थात्:

&lt; 

तुम एक में ऐसा करने की जरूरत नहीं है कोड ब्लॉक; कोड ब्लॉक में, आप प्रतीक से कम/से अधिक टाइप करें।

2

मुझे यकीन नहीं है कि यह सही है, लेकिन मैं L2E का उपयोग कर रहा हूं, AutoMapper तृतीय पक्ष टूल का उपयोग कर उत्पन्न वस्तुओं को डोमेन ऑब्जेक्ट्स में अनुवाद कर रहा हूं।

5

मैंने कुछ हफ्ते पहले आपके जैसा शुरुआत की, आप देखेंगे कि ईएफ के साथ काम करना बहुत आसान है। मेरी परियोजना छोटी है इसलिए मैं अपने मॉडल वर्गों के रूप में ईएफ द्वारा उत्पन्न इकाइयों का उपयोग कर रहा हूं, और आप आंशिक वर्ग का उपयोग करके अपने स्वयं के तर्क जोड़ सकते हैं।

यहाँ एक उदाहरण के रूप में अपने खजाने में से एक का एक सरल विधि है,:

/// <summary> 
    /// Finds a user by it's credentials 
    /// </summary> 
    /// <param name="oUser"></param> 
    /// <returns></returns> 
    public User FindByCredentials(string username, Byte[] password) 
    { 
     User user = null; 

     if (!Validators.IsStringEmptyOrNull(username)) 
     { 
      user = this.FindByCredentialsQuery(username, password).FirstOrDefault<User>(); 
     } 

     return (Validators.IsNull(user)) ? new User() : user; 

    } 


    /// <summary> 
    /// Finds a user by it's credentials 
    /// </summary> 
    /// <param name="username"></param> 
    /// <param name="password"></param> 
    /// <returns></returns> 
    protected IQueryable<User> FindByCredentialsQuery(string username, Byte[] password) 
    { 
     var query = from Users in this.UserDataContext.Users 
        where 
         (Users.Username == username) && 
         (Users.Password == password) && 
         (Users.Enabled == true) 
        select Users; 


     return query; 
    } 

ध्यान दें कि मैं IQueryable उपयोग कर रहा हूँ केवल भंडार के अंदर है, और केवल अनुरोध किया संस्थाओं की सूची वापस जाएँ। इस तरह मैं नियंत्रित कर सकता हूं कि डीबी को क्वेरी हमेशा रेपो के अंदर निष्पादित की जाती है।

+0

मैं इस बारे में सोच रहा था। रिटर्निंग IQueryable क्वेरी के निष्पादन को रोकता है, है ना? तो संदर्भ और कनेक्शन चारों ओर लटका रहे हैं? – CodeGrue

3

इकाई की रूपरेखा (सक्रिय) के लिए एक अच्छा सामान्य भंडार: http://www.codeproject.com/KB/database/ImplRepositoryPatternEF.aspx

आजकल मैं अनुप्रयोग फ्रेमवर्क के रूप में यह एक (एक आदर्श भंडार शामिल) http://efmvc.codeplex.com/

कृपया यह एक चिल्लाओ दे का उपयोग करें;)

3

एक नई एमवीसी ट्यूटोरियल श्रृंखला में एक रिपोजिटरी का एक उदाहरण शामिल है जिसमें पैरामीटर के साथ विधियां शामिल हैं जो आपको फ़िल्टर, सॉर्टिंग इत्यादि निर्दिष्ट किए बिना IQueryable: http://www.asp.net/entity-framework/tutorials/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application