2010-08-11 17 views
5

मैं उन सभी उपयोगकर्ताओं को एक ईमेल भेजना चाहता हूं जहां उनका जन्मदिन आज हैएएसपी.नेट सदस्यता प्रोफाइल

मैं अंतर्निहित एएसपीनेट (3.5) सदस्यता का उपयोग कर रहा हूं। सभी उपयोगकर्ताओं के पास प्रोफ़ाइल है (aspnet_Profile में संग्रहीत) जिसमें 'जन्मदिन' नामक दिनांक/समय की संपत्ति होती है। मुझे 'aspnet_Membership' तालिका से उपयोगकर्ता ईमेल पतों की एक सूची प्राप्त करने की आवश्यकता है, जहां उपयोगकर्ता का जन्मदिन आज उपयोगकर्ताओं के पहले नाम 'के साथ है, जो aspnet_Profile तालिका में स्ट्रिंग प्रॉपर्टी है।

मुझे सी # LINQ का उपयोग करके प्राथमिक रूप से लौटाई गई सूची चाहिए।

मैं कैसे जिस तरह से यह यानी नाम/मान स्तंभ db तालिका में संग्रहीत किया जाता है

उत्तर

3

मुझे लगता है कि आप के लिए बहुत-सुधार को बदलने पर विचार करना चाहिए के आधार पर प्रोफाइल तालिका में जन्मदिन संपत्ति का उपयोग करने की, यकीन नहीं है तालिका आधारित प्रदाता:

http://weblogs.asp.net/scottgu/archive/2006/01/10/435038.aspx

यह आपको मानक SQL तरह से मेज प्रति स्तंभ एक मूल्य में अपने डेटा को अलग करने की अनुमति देता है। यह मानक प्रदाता से बेहतर प्रदर्शन करता है और यह प्रोफाइल डेटाबेस से पूछताछ की आपकी समस्या हल करता है।

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

+0

धन्यवाद @ डैनियल मैं उस प्रदाता के बारे में भी अवगत नहीं था, निश्चित रूप से आगे बढ़ने का उपयोग कर रहा हूं! –

+0

आपका स्वागत है। –

0

मैं LINQ पर्याप्त उपयोग नहीं करते हैं तो आप एक अच्छा जवाब देने के लिए है, लेकिन निम्नलिखित अंतर्निहित एसक्यूएल आप की जरूरत हो सकता है (यह कैसे मेरे SSMS क्वेरी डिजाइनर में यह उत्पन्न होती है):

SELECT  aspnet_Profile.PropertyValuesString AS firstname, aspnet_Membership.Email 
FROM   aspnet_Profile INNER JOIN 
         aspnet_Membership ON aspnet_Profile.UserId = aspnet_Membership.UserId INNER JOIN 
         aspnet_Profile AS aspnet_Profile_1 ON aspnet_Profile.UserId = aspnet_Profile_1.UserId 
WHERE  (aspnet_Profile_1.PropertyNames LIKE N'birthday') AND (aspnet_Profile.PropertyNames LIKE N'firstname') AND (DATEADD(dd, 0, DATEDIFF(dd, 0, 
         aspnet_Profile_1.PropertyValuesString)) = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))) 
0

प्रोफ़ाइल तंत्र प्रत्येक नाम/मूल्य जोड़ी को विभाजित करके मूल्यों को पार करता है, और फिर उन्हें व्यक्तिगत रूप से पार्स कर देता है। आप स्वयं को ऐसा करने के लिए कोड लिख सकते हैं। या आप @ डैनियल के दृष्टिकोण का पालन कर सकते हैं और वैकल्पिक प्रदाता का उपयोग कर सकते हैं, जिससे जीवन आसान हो जाता है। आउट ऑफ़ द बॉक्स प्रदाता स्ट्रिंग कॉन्सटेनेशन के साथ एक दर्द है।

क्या यह कोड एक ही ऐप में है? यदि आप सी # बात कर रहे हैं, तो आप इसे पुनर्प्राप्त करने के लिए प्रोफ़ाइल ऑब्जेक्ट का उपयोग कर सकते हैं ... कोड का यह टुकड़ा किस संदर्भ में है? बैच सेवा?

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