यह अजीब है ... अपडेट किए गए अपडेट पहले से लोड होते हैं लेकिन यह नहीं पता कि यह अलग क्यों है। हालांकि मैं अब .NET 4.0 का उपयोग कर रहा हूं - हालांकि मुझे इसके एल 2 एस कार्यान्वयन में एक बग संदेह है। ऐसा नहीं है इसका एक अद्भुत और अद्भुत आवेदन है। हालांकि मुझे यकीन है कि यह कोड काम करता है जबकि मैं आरसी का उपयोग कर रहा था।Linq2Sql - अद्यतन करने का प्रयास कर रहा है लेकिन एसक्यूएल में सेट स्टेटमेंट खाली है
मैंने नीचे दी गई जानकारी का उपयोग करके एक परियोजना को खरोंच से बनाकर इस त्रुटि को पुन: पेश करने में भी कामयाब रहा है।
समस्या यह है कि L2S द्वारा उत्पन्न अद्यतन विवरण में सेट स्टेटमेंट में कोई फ़ील्ड नहीं है। मैंने यह जांचने की कोशिश की है कि पीके सेट है (केवल कारण है कि मुझे लगता है कि जहां कहीं भी क्षेत्र में आवश्यक क्षेत्र की आवश्यकता होगी) और अन्य डीबीएमएल गुणों को भी पढ़ा जाए। मैं लगभग 1 साल के लिए linq2Sql का उपयोग कर रहा हूं और मुझे कोई समस्या नहीं है .. मुझे अभी भी लगता है कि मुझे बस एक बड़ा मस्तिष्क फार्ट है।
नोट: मैंने कुछ फ़ील्ड को हटाने के लिए बराबर और GetHashCode विधियों को साफ़ कर दिया है - समस्या इसके बाद बनी रहती है। हालांकि मैंने एसक्यूएल को साफ नहीं किया है।
मैं dbml से एक ग्राहक वर्ग है मैं एक विधि अद्यतन कहा जाता है
public partial class Client : ICopyToMe<Client>
CopyToMe विधि एक अंतरफलक
public interface ICopyToMe<T>
{
void CopyToMe(T theObject);
}
भी वर्ग getHashCode अधिरोहित है
public override int GetHashCode()
{
int retVal = 13^ID^name.GetHashCode();
return retVal;
}
से प्राप्त होती है
और
के बराबर हैpublic override bool Equals(object obj)
{
bool retVal = false;
Client c = obj as Client;
if (c != null)
if (c.ID == this.ID && c._name == this._name)
retVal = true;
return retVal;
}
आंशिक वर्ग
public void UpdateSingle()
{
L2SDataContext dc = new L2SDataContext();
Client c = dc.Clients.Single<Client>(p => p.ID == this.ID);
c.CopyToMe(this);
c.updatedOn = DateTime.Now;
dc.SubmitChanges();
dc.Dispose();
}
CopytoMe विधि
public void CopyToMe(Client theObject)
{
ID = theObject.ID;
name = theObject.name;
}
इम, एक ग्राहक का चयन किया गया लेने जैसा कि इसके नाम को बदलने और उसके बाद इस अद्यतन विधि बुला में अद्यतन विधि। उत्पन्न एसक्यूएल के रूप में
exec sp_executesql N'UPDATE [dbo].[tblClient]
SET
WHERE ([ID] = @p0) AND ([name] = @p1) AND ([insertedOn] = @p2) AND ([insertedBy] = @p3) AND ([updatedOn] = @p4) AND ([updatedBy] = @p5)
AND ([deletedOn] IS NULL) AND ([deletedBy] IS NULL) AND (NOT ([deleted] = 1))',N'@p0 int,@p1 varchar(8000),@p2 datetime,@p3 int,@p4
datetime,@p5 int',@p0=103,@p1='UnitTestClient',@p2=''2010-05-17 11:33:22:520'',@p3=3,@p4=''2010-05-17 11:33:22:520'',@p5=3
मुझे पता नहीं क्यों यह काम नहीं कर रहा है इस प्रकार है ...
चयन वस्तु इस तरह का प्रयोग किया जाता - नए मूल्य के लिए> सेट क्षेत्र -> प्रस्तुत चयनित ऑब्जेक्ट
पैटर्न कई बार और यह समस्या नहीं थी। डीबीएमएल के साथ स्पष्ट रूप से कुछ भी गलत नहीं है - हालांकि यह शायद एक झूठा बयान
कोई विचार है?
यह समस्या यह देखने लगती है कि मुझे वापस ADO.Net पर वापस जाना होगा जो मुझे दुखी करेगा।
बिल्कुल सही! मैंने सही काम किया था और यह जवाब यहां पाया! धन्यवाद! – Ergodyne