2012-01-05 9 views
8

मैं कोड के इस बिट से पहले डाला नहीं कर सकते पाते रिकॉर्ड मैं SubmitChanges बुलाया नहीं किया है।Linq submitchanges

bExists झूठी क्यों वापस आते हैं? लिंकक डालने वाले रिकॉर्ड को देखने में सक्षम नहीं होना चाहिए?

उत्तर

1

मुझे विश्वास है कि

bool bExists = ctx.AllRecords.Any(r => r.Title == "test"); 

एक SQL क्वेरी कि SQL सर्वर परिणाम देता है।

MyRecord R = new MyRecord(); 
R.Title = "test"; 
+0

ठीक है, लेकिन मेरा मुद्दा यह है कि Lin2SQL को इसे चुनना चाहिए? क्या यह वस्तुओं को कैश नहीं करता है? क्या कोई ऐसी विधि है जिसे मैं कॉल कर सकता हूं जो कैश को भी जांचता है? – Jack

+0

एल 2 एस कैश ऑब्जेक्ट्स लेकिन मेरा मानना ​​है कि अनुपयुक्त डेटा "वास्तविक" डेटा की तुलना में किसी दूसरे स्थान पर संग्रहीत किया जाता है। उन्हें एक ही स्थान पर स्टोर करने का अर्थ नहीं होगा क्योंकि यदि आप एक प्रविष्टि को संशोधित करते हैं और फिर मूल प्रविष्टि की आवश्यकता होती है, तो आप ओवरराइड होने के लिए या तो प्रवेश (मूल या संशोधित) नहीं चाहते हैं। –

8

देखें Linq डीबी में मान नहीं लिख सकते हैं, अगर submitchanges() नहीं कहा: तो अगर आप जमा नहीं की है, तो डीबी बारे में कुछ पता नहीं है।

और दूसरे प्रश्न के लिए, हां, सबमिट करने से पहले लिंक कैश ऑब्जेक्ट्स। हम रिकॉर्ड प्राप्त कर सकते हैं जो कैश में हैं लेकिन डेटाबेस में सबमिट नहीं किए गए हैं।

आप ऊपर रिकॉर्ड डाला रूप में, हम नीचे के रूप में DataContext के कैश से रिकॉर्ड ऊपर प्राप्त कर सकते हैं:

पहले के रूप में DataContext से changeset प्राप्त करें:

System.Data.Linq.ChangeSet MySet = ctx.GetChangeSet(); 

यह करने के बाद, अपने रिकॉर्ड प्रपत्र ChangeSet निकालें:

MyRecord b = (MyRecord)MySet.Inserts.Last(); 

आपको शीर्षक के साथ MyRecord "test" के रूप में मिलेगा, जिसे आपने सम्मिलित किया था।

आशा है कि इससे मदद मिलेगी।