2009-02-03 13 views
15

मैं निम्नलिखित कोड है:Linq - नहीं मिला या परिवर्तित पंक्ति

 Guid id = imageMetaData.ID; 

     Data.LinqToSQL.Image dbImage = DBContext.Images.Where(x => x.ID == id).SingleOrDefault(); 

     dbImage.width = imageMetaData.Width; 
     dbImage.height = imageMetaData.Height; 

     DBContext.SubmitChanges(); 

एसक्यूएल प्रोफाइलर को देखते हुए, निम्नलिखित एसक्यूएल उत्पन्न किया जा रहा है:

exec sp_executesql N'UPDATE [dbo].[Images] 
SET [height] = @p0, [width] = @p1 
WHERE 0 = 1',N'@p0 int,@p1 int',@p0=603,@p1=365 

क्यों मेरी जहां बयान एक को शामिल नहीं करता "जहां आईडी = ...." ???

मैं क्या गलत कर रहा हूं?

मेरा आवेदन संदेश के साथ एक ChangeConflictException ...

+0

हमें इससे पहले कोड देखना होगा ... आपका डेटाकॉन्टेक्स्ट कैसे/कब तत्काल होता है? ImageMetaData.ID कहां सेट हो जाता है? –

+2

क्या आपके पास इस टेबल पर कोई ट्रिगर है? – BFree

उत्तर

38

चेक सुनिश्चित करें कि आपके मॉडल डीबी से मेल खाता बनाने के लिए "नहीं मिला या परिवर्तित पंक्ति" फेंकता है। अगर वे सिंक से बाहर हैं, तो मैंने इसे पूरा कर लिया है, ज्यादातर मामलों में नामुमकिन ध्वज। संभावित कारण के लिए यह article देखें।

मुझे लगता है कि आप .NET 3.5 (विजुअल स्टूडियो 2008) के रिलीज़ संस्करण का उपयोग कर रहे हैं।

+2

धन्यवाद, बस एक साधारण शून्य सेट मुद्दा नहीं था। डीबी को सिंक में रखने का बेहतर तरीका होना चाहिए! –

+0

यदि स्कीमा सरल है, तो डीबीएमएल से डीबी स्कीमा बनाने पर विचार करें। इससे डीबीएमएल सच का स्रोत बन जाता है। –

1

मिले में समाधान: http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/c672c8ee-bf2a-41b4-bb8b-aa76cc5d9b95 (टोड Fleenor द्वारा पोस्ट की गई)

समस्या डिजाइनर करने के लिए सर्वर एक्सप्लोरर से तालिका redragging और पुनर्निर्माण करके इस त्रुटि को हल किया जा सकता है। तो डिजाइनर एसक्यूएल टेबल के साथ आउट-ऑफ-सिंचन था ...

+0

मेरे लिए काम किया। स्थिति को हल करने का सबसे अच्छा तरीका एसक्यूएल फ़ाइल में एक नया linq बनाना, टेबल खींचें और छोड़ना है, और उसके बाद परिणामी एक्सएमएल की प्रतिलिपि बनाना है – madoke

0

मुझे एक ही समस्या थी और डीडीएमएल फ़ाइल (डिजाइनर) में सिर्फ हटाई गई तालिका थी और फिर डेटाबेस से गिरा दिया गया, फिर मेरा आवेदन बनाया गया। यह मेरी समस्या हल हो गया।

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