2009-07-02 8 views
5

डालने पर मैंने अपनी आयात सेवा में आज एक अजीब व्यवहार देखा जब मैंने एकाधिक डेटा रिकॉर्ड आयात करने का प्रयास किया।InsertAllOn सबमिट करें केवल पहले डेटा रिकॉर्ड

public void Create(List<Property> properties) 
{ 
    foreach (Property prop in properties) { 
     dbc.Property.InsertOnSubmit(prop); 
     dbc.SubmitChanges(); 
    } 
} 

जब मैं इसे इस तरह की कोशिश, केवल पहली डेटा रिकॉर्ड प्राप्त एक सही है:

जब मैं इसे इस तरह करते हैं, सभी डेटा रिकॉर्ड आयात किए जाते हैं और ऑटो की संख्या बढ़ मूल्य सही (see screenshot) है ऑटो की संख्या बढ़ मूल्य (see screenshot):

foreach (Property prop in properties) { 
    dbc.Property.InsertOnSubmit(prop); 
} 
dbc.SubmitChanges(); 

यहाँ एक ही:

dbc.Property.InsertAllOnSubmit(properties); 
dbc.SubmitChanges(); 

क्या किसी के पास कोई विचार है कि ऐसा क्यों है? सभी तीन प्रकारों को मेरी समझ के अनुसार सभी डेटा रिकॉर्ड आयात करना चाहिए, लेकिन गायब ऑटो-वृद्धि वाले मान इंगित करते हैं कि यह इस तरह से नहीं है।

[संपादित करें] दो स्क्रीनशॉट जोड़े गए।

+0

बस एक साइड नोट के रूप में, क्या आप सुनिश्चित हैं कि यह डीबीसी प्रॉपर्टी है और डीबीसी प्रॉपर्टीज नहीं है? LINQ से SQL आमतौर पर संग्रह नामों को बहकाता है ... – BFree

+0

हाँ, यह "संपत्ति" है। मैंने खुद को टेबल नाम दिया, वे ऑटो-जेनरेट नहीं थे या ऐसा कुछ नहीं था। इसके अलावा, अगर इसे "गुण" कहा जाता है, तो पहला उदाहरण काम नहीं करना चाहिए, है ना? –

+0

लगता है कि लोग इसकी समस्या से सहमत हैं, लेकिन कोई भी +1 नहीं है? ठीक है मैं शुरू करूंगा। ऐसा लगता है जैसे यह मेरे लिए एक बग हो सकता है। – MattH

उत्तर

6

मैं एक ही समस्या थी और यह पता चला मुद्दा अधिभावी बराबर की वजह से था मैप किए गए वर्ग पर। मेरी समान विधि केवल प्राथमिक कुंजी फ़ील्ड की तुलना कर रही थी जो पहचान क्षेत्र था। बेशक जब वस्तुएं नई होती हैं, तो सभी पहचान 0 होती हैं। इसलिए जब InsertAllOnSubmit कहा जाता था, तो उसने सोचा कि सभी नई वस्तुएं समान थीं और मूल रूप से सभी को अनदेखा कर दिया गया था।

2

नहीं काफी यकीन है कि क्यों 2 भिन्नता काम नहीं करता है, हालांकि, पिछले एक नहीं होना चाहिए:

dbc.Property.InsertallOnSubmit(properties); 
dbc.SubmitChanges(); 

संपादित

दूसरा पाश कोशिश के लिए:

foreach (Property prop in properties) 
{ 
    var newProp = new Property(); 
    newProp = prop; 
    dbc.Property.InsertOnSubmit(newProp); 
} 
dbc.SubmitChanges(); 

अंतिम समाधान के लिए प्रयास करें:

dbc.Property.InsertAllOnSubmit(properties.ToList()); 
dbc.SubmitChanges(); 
+0

हाँ, ज़ाहिर है। अंतिम उदाहरण पर कॉपी और पेस्ट त्रुटि :) –

+0

क्या आपको कोई त्रुटि मिलती है? – James

+0

कोई त्रुटि नहीं। मैंने अपनी मूल पोस्ट में दो स्क्रीनशॉट जोड़े हैं। जैसा कि आप देख सकते हैं, पहली विधि के साथ सभी गुणों को आईडी प्राप्त होती है (स्क्वायर ब्रैकेट्स में संख्याएं] [])। दूसरे स्क्रीनशॉट पर, केवल पहली संपत्ति को आईडी मिलती है। मुझे बिल्कुल पता नहीं है कि क्या गलत है क्योंकि प्रदत्त कोड एकमात्र चीज है जो स्क्रीनशॉट दोनों में अलग है! –

1

अन्य उपयोगकर्ताओं को एक ही अजीब व्यवहार कर रहे हैं के रूप में, मैं माइक्रोसॉफ्ट के लिए एक बग के रूप में इस मुद्दे की रिपोर्ट की है:

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=483711

+1

हां, मैं घर पर बग को पुन: पेश नहीं कर सका और टिकट बंद कर दिया गया क्योंकि लिंक टीम इसे पुन: पेश नहीं कर सका। : / –

1

मुझे कुछ मिनट पहले इस समस्या का सामना करना पड़ा।

मेरा मुद्दा यह था कि जिस संदेश को मैंने InsertAllOnSubmit<mappedClass>() पर भेजा था वह उन वस्तुओं से भरा था जो mappedClass के एक उदाहरण से उत्पन्न हुई थीं। मैं उस दृश्य मॉडल के उदाहरण के आधार पर सदस्यों को संशोधित कर रहा था जिसे मैं डेटाबेस में जोड़ना चाहता था और फिर सूची में उदाहरण को फिर से जोड़ना चाहता था।

एक नौसिखिया गलती की तरह लगता है लेकिन यह जांचने के लिए कुछ हो सकता है कि किसी को अभी भी यह समस्या हो रही है!

0

बस इस एक, सही, समाधान का उपयोग करें।
जैसा कि, हमारे पास "टेस्टटेबल" जैसी नई इकाई है।
रूप

TestTable objTable = new TestTable(); 

पाश के लिए अंदर इस इकाई प्रारंभ और इकाई आइटम पाश के लिए सूची <TestTable> की सूची वस्तु के साथ-साथ जोड़ें।
और लूप के बाहर InsertAllOnSubmit() स्थानांतरित करें और अब इसे काम करना होगा।

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