2012-04-03 9 views
5

मैं एंटिटी फ्रेमवर्क 4 का उपयोग कर एक एमवीसी 3 साइट बना रहा हूं और मुझे निश्चित लंबाई वाले फ़ील्ड में समस्या है।एंटिटी फ्रेमवर्क मेरे टेक्स्ट फ़ील्ड को पैडिंग कर रहा है हालांकि वे निश्चित लंबाई नहीं हैं

जब मैं डीबग के दौरान अपना कोड देखता हूं तो यह दिखाता है कि MyEntity.Title="Hello name " शीर्षक के साथ क्षेत्र की अधिकतम लंबाई तक पैड किए गए शीर्षक के साथ।

यह आमतौर पर edmx फ़ाइल में क्षेत्र की लंबाई निश्चित या एक varchar. बजाय अंतर्निहित डेटाबेस पर एक char डेटा प्रकार का उपयोग कर इस मामले में न तो उन सही है की होने का सवाल है, लेकिन यह संभव है समस्या प्रांगण है कि मूल रूप से निश्चित लंबाई के थे। मैं मैन्युअल edmx में प्रत्येक क्षेत्र को बदल दिया है (और मॉडल पुनर्जीवित किया गया है) और खेतों डेटाबेस में लंबाई (जो आवेदन के लिए प्रारंभिक बिंदु था) तय नहीं किया गया तो मुझे लगता है कि कि बाहर खेतों पैड की जरूरत किया जा रहा है एंटीटी फ्रेमवर्क कॉन्फ़िगरेशन में कहीं भी संग्रहीत किया गया है और अपडेट नहीं किया गया है।

समस्या तब होती है जब वे डेटाबेस में जोड़े जाते हैं- जब ऑब्जेक्ट बनाया जाता है तो शीर्षक सही होगा, जब यह डेटाबेस से instanciated है, यह गद्देदार है।

पैडिंग से छुटकारा पाने के लिए मुझे क्या करने की ज़रूरत है, जो वास्तव में मेरी स्ट्रिंग तुलना को खराब कर रहा है जब तक कि मैं सब कुछ ट्रिम नहीं करता? जब आप डेटाबेस से इसे अद्यतन

+0

मैं आपके प्रश्न से नहीं कह सकता कि क्या आप पूरी तरह से नए डेटाबेस रिकॉर्ड या उन लोगों के बारे में बात कर रहे हैं जो इकाई मॉडल में फ़ील्ड निश्चित लंबाई पर सेट किए गए थे। क्या आप स्पष्ट कर सकते हो? –

+0

मैं सवाल नए रिकॉर्ड के साथ समस्या पैदा होती है अद्यतन किया है। – glenatron

उत्तर

4

यह पता चला है कि .EDMX फ़ाइल में पैड की गई फ़ाइलों को अभी भी nchar के रूप में सूचीबद्ध किया गया था। दृश्य स्टूडियो में मॉडल पर राइट-क्लिक करें यह मॉडल संपादक, यह करने के लिए था बदलने का एकमात्र तरीका के माध्यम से दिखाई नहीं देती थी और "के साथ खुला ..." तो एक XML संपादक का उपयोग करें। हमलावर क्षेत्रों इस तरह देखा:

<Property Name="MyProperty" Type="nchar" Nullable="false" MaxLength="50" /> 

Typenvarchar को बदलने और टेम्पलेट चल फिर समस्या स्पष्ट करने के लिए लग रहा था।

+0

यह मेरी समस्या का समाधान था। मैं समाधान की तलाश में 2 घंटे की तरह अपने सिर को टक्कर लगी हूं। धन्यवाद। – NewbieProgrammer

2

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

मॉडल ब्राउज़र में संपत्ति प्रकारों की जांच करें और सुनिश्चित करें कि वे सही हैं।

+0

जैसा कि मैंने सवाल में कहा गया है, मॉडल अद्यतन किया गया है, डेटाबेस सभी varchar क्षेत्रों है। विजुअल स्टूडियो या एसक्यूएल सर्वर में कुछ भी नहीं है जो इंगित करता है कि फ़ील्ड को गद्दी से बाहर किया जाना चाहिए, इसलिए मुझे लगता है कि ईडीएमएक्स फ़ाइल के एक्सएमएल में कहीं कुछ छिपा हुआ है या कहीं ऐसा ही है। – glenatron

+1

और मैं यह स्पष्ट कर रहा था कि डेटाबेस से अद्यतन मॉडल पर जाकर मॉडल में मौजूदा तालिकाओं में मौजूदा फ़ील्ड नहीं बदलते हैं। उन्हें मैन्युअल रूप से तय किया जाना चाहिए। यदि आपने मॉडल में प्रत्येक तालिका में मैन्युअल रूप से प्रत्येक फ़ील्ड को ठीक किया है, तो आपने यह स्पष्ट नहीं किया है। –

+0

मैंने सोचा था कि जब मैंने इसे लिखा था तो यह स्पष्ट था लेकिन मैं देख सकता हूं कि यह भ्रमित हो सकता है इसलिए मैंने प्रश्न संपादित किया है - धन्यवाद। मैंने मॉडल संपादक में प्रत्येक फ़ील्ड के लिए मैन्युअल रूप से फ़ील्ड गुणों को बदल दिया। – glenatron

0

निश्चित लंबाई संपत्ति सच के बराबर सेट करने के लिए अपने शीर्षक फ़ील्ड को बदलें। यह शायद किसी के लिए डिफ़ॉल्ट नहीं है :)

सुनिश्चित करें कि आप पहले डीबेस में परिवर्तन करें और फिर अपने edmx को अपडेट करें।

+0

मुझे यकीन नहीं है कि मैं इस जवाब को समझता हूं।संपत्ति के रूप में हालांकि यह निश्चित लंबाई है नहीं * निश्चित लंबाई बर्ताव कर रही है और * मैं जैसे कि यह है यह व्यवहार करने के लिए चाहते हैं। यह तय करने के लिए इसे कैसे तय करेगा? – glenatron

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