के साथ डीबी में नया रिकॉर्ड बनाएं मुझे हल करने के लिए मुझे एक बहुत ही कठिन समस्या है, और मैंने बहुत सोचा और खोज की और एक निष्कर्ष निकाला जो मैं उल्लेख करूँगा। समस्या यह है कि मेरे पास एक क्लाइंट है जो सामान्य कार्यक्षमता के आधार पर वेबसाइट बनाना चाहता है, इसलिए हम इसे मॉड्यूल कहते हैं, इसलिए मैंने सोचा कि एमवीसी कंट्रीब पोर्टेबल एरिया का उपयोग करना है, जो मॉड्यूल को प्लग करने के लिए बहुत अच्छे विचार हैं, लेकिन मेरे पास है एक बड़ी समस्या, आइए हम कहें कि मैंने एक ब्लॉग मॉड्यूल बनाया है जिसे वह एक नई साइट में लागू किया जाएगा, अब कुछ उपयोगकर्ताओं के पास अनूठी आवश्यकताएं हैं जैसे उनमें से एक को प्रत्येक आलेख में चित्रों की गैलरी जोड़ने, या प्रत्येक आलेख में संदर्भों की सूची जोड़ने की आवश्यकता है । जहां, पर काम करने के लिए एक साइट है, तो तुम सब क्या करना हैजटिल मॉड्यूल आधारित एएसपी.नेट एमवीसी 2
- ब्लॉग मेज पर विदेशी कुंजी से नई गैलरी तालिका जोड़ने है इस सामान्य स्थिति में आसान होगा।
- Linq2SQl कोड पुन: उत्पन्न करें और मॉडल को अद्यतन करें।
- बनाएं, संपादित करें, हटाएं दृश्यों में नए फॉर्म तत्व जोड़ें।
- नियंत्रक में तर्क जोड़ें।
लेकिन मेरी स्थिति में यह जटिल और समय बोझिल है, क्योंकि 2 कारणों
की- अगर नई कार्यक्षमता शांत और ग्राहक सभी साइटों में इसे लागू करने का फैसला है, तो मैं दोहराना प्रत्येक साइट के लिए काम करते हैं।
- अगर कार्यक्षमता अद्वितीय यह भविष्य
है कि मेरे लिए विसंगति पैदा करेगा यही कारण है कि मैं पोर्टेबल क्षेत्रों में प्रयोग किया जाता प्रत्येक मॉड्यूल के लिए ऐड-ऑन बनाने के लिए, अब यह निश्चित रूप से मेरे काम को कम होगा समस्या का समाधान करने के लिए पहले कदम के रूप प्रत्येक नए मॉड्यूल या एडऑन के 1 DLL खींच, लेकिन मैं यहाँ एक छोटे से समस्या है, जो
- नए मॉड्यूल या ऐड एक Dll है क्योंकि द्वारा, मैं कैसे मेरे व्यवस्थापक पैनल में इस तरह के एक कार्यक्षमता बना सकते हैं नया एडन इंस्टॉल करें या कोई नयाखोजेंजोड़ा मॉड्यूल/Addon मुख्य आवेदन
- क्या अद्यतन की तरह पोर्टेबल क्षेत्र के अंदर एक अधिष्ठापन प्रक्रिया बनाने के लिए, अभ्यास सबसे अच्छा है डीबी, न्यू मार्गों, आदि के लिए नए DLLS घसीटा ..
अब हम अनुच्छेद गैलरी Addon वापस ले, अगर मैं तर्क मैं एक पोर्टेबल क्षेत्र के रूप में यह बनाने के द्वारा जैसा कि ऊपर उल्लेख किया है का पालन करें, यह आसान होगा चलो सभी स्थापित एडॉन्स के माध्यम से मॉड्यूल कोड में लूप को कार्यक्षमता बनाने के लिए और उन्हें CRUD दृश्यों में सूचीबद्ध करने के लिए, लेकिन क्योंकि मैंने एडन को अलग किया है और ऊपर के कारणों के लिए मुख्य मॉड्यूल कोड मैन्युअल रूप से अपडेट नहीं करना चाहते हैं, इसके लिए कोई रास्ता नहीं होगा मुख्य मॉड्यूल के साथ सिंक में नए एडॉन्स के लिए सीआरयूडी ऑपरेशन कर रहा है क्योंकि कोई विदेशी कुंजी संबंध नहीं है, क्योंकि मैंने ऊपर कहा है कि यह वैकल्पिक हो सकता है, इसलिए मैंने निम्न समाधान के बारे में सोचा जो मुझे उम्मीद है कि बेहतर होगा
स्थापना प्रक्रिया में सबसे पहले मैं गैलरी एडन के लिए एक टेबल तैयार करूंगा, लेकिन एक विदेशी कुंजी संबंध बनाने के बजाय मैं एक मैन्युअल विदेशी कुंजी तैयार करूंगा जो मुख्य मॉड्यूल नियंत्रक में एक अद्वितीय आईडी उत्पन्न करके पॉप्युलेट हो जाएगा जब मैं उपयोग करके रिकॉर्ड बनाउंगा निम्नलिखित कोड तो
private string GenerateId()
{
long i = 1;
foreach (byte b in Guid.NewGuid().ToByteArray())
{
i *= ((int)b + 1);
}
return string.Format("{0:x}", i - DateTime.Now.Ticks);
}
ViewData["FK"] = GenerateId();
ViewData में संग्रहीत और जब मैं नया रिकार्ड बनाने के सिर्फ युद्ध नियंत्रक को इसे पारित, लेकिन यहाँ मेरी चिंताएं हैं
- इस तरह से संभव है या सिर्फ सादा बेवकूफ है ।
- यह तकनीक वास्तव में अद्वितीय कुंजी उत्पन्न करेगी।
मैं अगर मेरे सवाल लंगड़ा है अत्यंत खेद है, लेकिन इस सबसे अच्छी जगह पूछना है और मुझे लगता है कि कई लोगों को इस तरह के एक कार्यक्षमता है चाहेगा और आशा है कि कोई मुझे
यह बिल्कुल एक लंगड़ा सवाल नहीं है, लेकिन यह * एक डिज़ाइन प्रश्न है, जिसमें थोड़ा विचार होना आवश्यक है। मुझे नहीं लगता कि आपके डेटाबेस डिज़ाइन को आपको अपनी खुद की आईडी बनाने की आवश्यकता होनी चाहिए, हालांकि।मेरी वृत्ति यह है कि प्लगइन को एक दूसरे से अलग करने के लिए एक अतिरिक्त कॉलम के साथ, आपको अपनी सभी प्लगइन जानकारी (यदि आप यही कर रहे हैं) वाली एक तालिका की आवश्यकता है। यह आपको सभी प्लगइन के लिए एक ही लिंक से SQL स्कीमा का उपयोग करने की अनुमति देगा। यदि किसी विशेष प्लगइन के लिए अनन्य जानकारी है, तो आप उस प्लगइन की अनूठी जानकारी के लिए SQL स्कीमा में एक अलग लिंक बना सकते हैं। –
एसक्यूएल स्कीमा के लिए अलग लिंक प्लगइन के साथ रह सकता है, ताकि जब भी आप अद्वितीय जानकारी के साथ प्लगइन जोड़ते हैं तो आपको मुख्य लिंक को SQL स्कीमा में अपडेट करने की आवश्यकता नहीं होती है। यह कई तरीकों में से एक है जिसकी समस्या को हल किया जा सकता है। –
धन्यवाद दोस्तों, लेकिन क्या आप मुझे बता सकते हैं कि प्लगइन स्कीमा में केवल मुझे प्लगइन टेबल्स में क्या शामिल करना चाहिए? एक और समस्या जो अभी भी मौजूद है, मैं प्लग इन के साथ नए डाले गए रिकॉर्ड को कैसे जोड़ सकता हूं, क्या मैंने इसका उल्लेख किया है या बेहतर तरीका है? – DevMania