2009-07-13 14 views
22

पर ध्यान नहीं देता Linq करने वाली एसक्यूएल का उपयोग कर, एक मौजूदा तालिका में एक कॉलम जोड़ने, और कहा कि नया स्तंभ पर एक डिफ़ॉल्ट मान सेट करते समय, ऐसा लगता है कि LINQ एसक्यूएल के लिए डिफ़ॉल्ट मान पर ध्यान नहीं देता। क्या किसी और ने इस व्यवहार का अनुभव किया है? क्या इसे ठीक करने का कोई तरीका है, ताकि लिंक-टू-एसक्यूएल या एसक्यूएल सर्वर स्वचालित रूप से डिफ़ॉल्ट मान सेट कर सके?Linq करने वाली एसक्यूएल एसक्यूएल सर्वर डिफ़ॉल्ट मान

स्तंभ मैं जोड़ा 1.

+1

डुप्लिकेट: http://stackoverflow.com/q/201706/11683 (बंद करने के लिए मतदान नहीं, दोनों समान रूप से उपयोगी हैं)। – GSerg

उत्तर

11

मैं अब निश्चित this blog से एक उदाहरण का उपयोग करके यह तय कर दी है।

partial void OnCreated() { 
    if (this.DateTimeCreated == null) { 
      this.DateTimeCreated = DateTime.Now; 
    } 
} 

मैं के रूप में डिफ़ॉल्ट एक स्वचालित रूप से हर बार ओवरराइट है आप dbml में कुछ बदलने एक आंशिक DataContext वर्ग में यह पारित करने के लिए की जरूरत है,।

+0

क्या मेरा समाधान समस्या को ठीक नहीं करता है? –

+1

आपका समाधान सम्मिलित करने पर काम करता है, लेकिन जब मैं रिकॉर्ड अपडेट करता हूं तो मुझे डेटाबेस में जेनरेट किए गए कुछ सदस्यों के बारे में त्रुटि मिलती है – jao

+1

क्या आपने "हमेशा" पर ऑटो-सिंक सेट करने का प्रयास किया है? –

4

मैं इस देखा है करने के लिए सेट एक डिफ़ॉल्ट मान के साथ प्रकार बिट की थी। आप क्या कर सकते हैं l2sql डिजाइनर में जाएं, तालिका कॉलम के लिए गुण देखें जिसमें डिफ़ॉल्ट मान है। एक संपत्ति "ऑटो जेनरेटेड वैल्यू" है, इसे सही पर सेट करें।

यह वही मान सही पर में उस मामले एसक्यूएल सर्वर आपके पंक्ति आईडी पैदा कर रहा है के रूप में स्वचालित रूप से पहचान स्तंभ के लिए स्वचालित रूप से सेट किया गया है,।

+1

यह काम नहीं कर रहा है, क्योंकि मुझे बाद में कॉलम अपडेट करना होगा। जब मैं आपके समाधान का प्रयास करता हूं तो मुझे एक त्रुटि मिलती है: "डेटाबेस में गणना या उत्पन्न सदस्य को बदला नहीं जा सकता" – jao

+0

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

+0

मुझे लगता है कि मुझे जो त्रुटि मिलती है वह लिंक-टू-एसक्यूएल में एक बग है। 'ऑटो जेनरेटेड वैल्यू' का टूलटिप कहता है "मूल्य डालने पर स्वत: उत्पन्न होता है" – jao

7

डिजाइनर में जाकर चुनें "OnInsert" के "ऑटो-समन्वयन" मूल्य। जब डेटाबेस में रिकॉर्ड डाला जाता है तो यह मान सिंक हो जाएगा।

+0

देखें http://www.intrepidstudios.com/blog/2009/2/6/using-default-values-in-linq-to-sql। अधिक जानकारी के लिए एएसपीएक्स। यह एक निश्चित दृष्टिकोण है। – GONeale

+1

@ गोनेल: डेड लिंक। –

+2

यह काम नहीं करता है। ऑब्जेक्ट डालने पर यह मान को छोड़ने नहीं देगा। यदि आप करते हैं, तो यह कॉलम मान के रूप में 'शून्य' डालने का प्रयास करेगा, जब सही कार्रवाई क्वेरी में किसी भी मूल्य को सूचीबद्ध नहीं करेगी। तो जब कॉलम गैर-शून्य है, तो आपको "एक गैर-शून्य कॉलम में शून्य डालना नहीं" त्रुटि मिलती है। – GSerg

11

ऑटो जेनरेटेड संपत्ति को सही पर सेट करें।

enter image description here

+2

यह काम नहीं करता है। यह काम करता है यदि आप हमेशा डिफ़ॉल्ट मान का उपयोग करना चाहते हैं, लेकिन ऑब्जेक्ट डालने पर यह आपको गैर-डिफ़ॉल्ट मान का उपयोग नहीं करने देगा। Linq2Sql आपके द्वारा प्रदान किए गए मान को अनदेखा कर देगा और डिफ़ॉल्ट को वापस पढ़ेगा। – GSerg

1

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

1

आप कभी अपने कोड में मान बदलने के लिए की जरूरत है (उदाहरण के लिए। एक डिफ़ॉल्ट के साथ एक प्रकार तालिका मूल्य) फिर 'स्वतः जेनरेट हुआ मान' का उपयोग नहीं करते या आप इसे बाद मिल जाएगा जब आप इसे अद्यतन करने का प्रयास करें।

Value of member 'AlternativeQuoteStatus' of an object of type 'OrderDetail' changed. A member that is computed or generated by the database cannot be changed.

मैं के रूप में यहाँ दूसरों के द्वारा वर्णित जब मैं वस्तु बनाने, OnCreated में वापस आने के साथ इस तरह मूल्यों को निर्धारित पसंद करते हैं।

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