c# - Getting a list of Resource-Activities pairs. Entity Framework -
- यहां DbContext और मॉडल का सार है मेरी परियोजना में -
- ये संबंध हैं:
-
उपयोगकर्ता-भूमिका के रूप में एम : एमभूमिका -गतिविधि एम : एम : एम के रूप मेंसंसाधनRoleResourceActivity- बीज
-
-
Linq--query: P>
चुनें r.Name [संसाधन], a.Name क्रियाएँ से आरआर पर जुड़ें RoleResourceActivities ra.ActivityId = a.Id आरओ पर संसाधन आर शामिल करें। ResourceId = r.Id आरओ पर भूमिकाएं आरओ में शामिल हों RoleId = ro.Id urRole_Id = ro.Id पर यूआरर में शामिल हो जाता है। यूआर यूजर यूआई यूयूआई पर यूडी में शामिल होते हैं यू.आईडी. यू में यू.यूयूएनयूएनयूआरएल = 'यूजर' समूह आर। एननाम, एकनामनाम। परिणाम उपयोगकर्ता और User2 के अनुरूप:
प्रश्न ऐसा कोई linq-query कैसे लिख सकता है ताकि परिणाम सेट होगा
या JSON में:
नया {संसाधन = संसाधन। नाम, क्रियाकलाप = सूचीऑपरिंग संबंधित गतिविधि} // उपयोगकर्ता नाम: `उपयोगकर्ता`, भूमिकाएं:" सरल उपयोगकर्ता "," उन्नत उपयोगकर्ता "[{संसाधन:" ब्लॉग ", क्रियाएँ: [" हटाएं "," पढ़ें "," अपडेट "] }, [संसाधन: "ब्लॉग", क्रियाएँ: [संसाधन: "वार्ता", क्रियाएँ: ["हटाएं", "पढ़ें", "अपडेट"]}] उपयोगकर्ता नाम: 'उपयोगकर्ता 2`, भूमिकाएं: "सरल उपयोगकर्ता" [क्रियाएँ: [ "पढ़ने"]}, {संसाधन: "वार्ता", क्रियाएँ: ["पढ़ें"]}]
आप इस विधि का उपयोग कर किसी उपयोगकर्ता से संसाधन और संबंधित गतिविधियों को पा सकते हैं:
सार्वजनिक आईएलओ okup & LT; स्ट्रिंग, स्ट्रिंग & gt; GetResourcesAndActivitiesByUser (स्ट्रिंग उपयोगकर्ता नाम) {का उपयोग कर (वर _db = नए AppDbContext ()) {वापसी (यू से _db.Users जहां u.UserName == _db.Activities में एक से उपयोगकर्ता नाम _db.RoleResourceActivities में ra में शामिल होने पर a.Id रा के बराबर होती है में । एक्टिविटीइडी आर डीडी में शामिल हैं। आरओ पर संसाधनों। रिसोर्सआईडी आर.आईडी के बराबर होती है डीडीबी में आर.ओ.आर. आर पर आरओ। आरओआईडी बराबर होती है ro.Id जहां u.Roles.Contains (ro) नई {RESOURCE = r.Name, गतिविधि = a.Name}) .ToLookup (ई = & gt; e.Resource, ई = & gt; e.Activity); }} आप एक बनाना चाहते हैं IEnumerable & lt; & gt; के रूप में आप अपने प्रश्न में दिखाने गुमनाम प्रकार पर आधारित है, तो आप ऐसा कर सकते हैं:
<कोड> वर संसाधनों = GetResourcesAndActivitiesByUser ( "userx") का चयन करें। (ड = & gt; नए {संसाधन = e.Key, क्रियाएँ = e.ToList ()});
Comments
Post a Comment