c# - managing classes when everything is relative to a user in nhibernate (orm) -


सबसे पहले मुझे तीन संस्थाएं हैं।

उपयोगकर्ता, भूमिकाएं, आइटम < / P>

एक उपयोगकर्ता कई भूमिकाएं कर सकता है।

इसलिए एक उपयोगकर्ता को अलग-अलग आइटमों का उपयोग करना होगा।

अब कुछ तरीके हैं जो मैं यह काम देख सकता हूं।

  1. उपयोगकर्ताओं पर एक संग्रह है जिसमें कई-से-कई एशॉक के माध्यम से भूमिकाएं हैं। इसके बाद इस संग्रह में प्रत्येक भूमिका में आइटम का अपना संग्रह होगा। तो प्रत्येक उपयोगकर्ता के लिए मुझे उपयोगकर्ता को (नबि का उपयोग करके और इसके साथ भूमिकाएं और वस्तुओं को प्राप्त करना) प्राप्त करना होगा, फिर या तो प्रत्येक रोल में मौजूद आइटमों पर चयनकर्ता को किसी भी उपयोगकर्ता के लिए सभी आइटम प्राप्त करना होगा या कुछ अलग-अलग foreach को पोर्ट करना होगा एक दृश्य या डीटीओ मॉडल के लिए डेटा।

  2. एक अन्य तालिका में स्वचालित रूप से सम्मिलित करने के लिए डीबी ट्रिगर बनाएँ जो कि उपयोगकर्ता और वस्तुओं के बीच का संबंध है, ताकि मेरे उपयोगकर्ता इकाई पर एक आइटम संग्रह है जिसमें सभी आइटम मुझे सौंपे गए हैं

  3. कुछ अन्य तरीके जो मैं अभी तक नहीं सोच सकता, क्योंकि मैं नया हेइबरनेट के लिए नया हूँ।

अब मुझे पता है कि ट्रिगर सही नहीं लगता है, लेकिन मुझे यकीन नहीं है कि यह कैसे करना है। हमारे पास कुछ पदानुक्रम भी हैं जहां एक उपयोगकर्ता उपयोगकर्ताओं के समूह के प्रभारी हो सकता है। अगर कोई इन्हें नाइबर्नेनेट या अन्य ओम में इन परिदृश्यों के बारे में कुछ प्रकाश डाल सकता है जो कि महान होगा, या बिंदु एक दिशा में होगा

मुझे पता है कि अतीत में आपको सभी संयोजनों को एक तालिका में दर्ज करना होगा ताकि क्वेरी काम कर सके, लेकिन जब आप एसक्यूएल जानते हैं तो यह बहुत खराब नहीं है।

अगर आपको किसी की ज़रूरत है अन्य जानकारी तो मुझे बताएं चीयर्स

लॉजिकल मैपिंग यूजर को कई भूमिकाओं के लिए सौंपा गया है (उलटा होने वाली भूमिका में कई उपयोगकर्ता हैं यदि आप वास्तव में इसे ट्रैक करने की ज़रूरत है) और आइटम कई भूमिकाओं के लिए दृश्यमान है (यदि आप वास्तव में उस पर नज़र डालना चाहते हैं तो फिर व्युत्क्रम ही बनाया जाना चाहिए।)

Ayende ने राइनो सिक्योरिटी के साथ इस समस्या का समाधान किया है। इस पर अपने सभी ब्लॉग पोस्टों पर गौर करें। मूलतः वह एनआईएचबेनेनेट इंटरसेप्टर का प्रयोग कर रहा है ताकि सुरक्षा जानकारी के साथ कोई भी प्रश्न पूछ सकें, जिसका अर्थ है कि एक बार आपने "बस काम करता है" की स्थापना की है और आपको अपने प्रश्नों के लिए सुरक्षा संबंधी चिंताओं को जोड़ने की चिंता नहीं है।

यदि आप इसका उपयोग किसी दिए गए उपयोगकर्ता के लिए सभी आइटमों को प्राप्त करने / प्रदर्शित करने के लिए नहीं करना चाहते हैं, तो आप उन सभी आइटम्स का चयन करना चाहेंगे, जो कि किसी भी भूमिका के लिए दृश्यमान हैं जो उपयोगकर्ता का सदस्य है:

  1. वर्तमान उपयोगकर्ता की सभी भूमिकाएं खोजें
  2. उपयोगकर्ता के लिए भूमिकाओं की सूची जिसमें सभी आइटम खोजें

    var roleIds = DetachedCriteria.For। जोड़ें ( प्रतिबंध .आईडीईक (वर्तमान उपयोगकर्ता.आईडी)) .केयर कट्रिटिआ ("भूमिकाएं")। एसटीप्रोजेक्शन (प्रेजिजेस.आईडी);

    var आइटम = सत्र। क्रेटिक्रेटिरिया () .केयर कटराइटर ("विज़िटेटो")। जोड़ें (उपकुंजीकरण .प्रॉपर्टी इन ("आईडी", रोल इड्स))। लिस्ट ();

मेरे सिर के शीर्ष पर लिखे गए हैं, इसलिए इसे कुछ और ट्यूनिंग की आवश्यकता हो सकती है।


Comments

Popular posts from this blog

c# - How to capture HTTP packet with SharpPcap -

jquery - SimpleModal Confirm fails to submit form -

php - Multiple Select with Explode: only returns the word "Array" -