यह वास्तव में निर्भर करता है। प्रदर्शन के लिए, एसक्यूएल सीई सबसे अच्छा काम करता है अगर डेटाबेस के साथ हमेशा लाइव कनेक्शन होता है, क्योंकि इंजन को हर बार कनेक्ट होने पर हर चीज का निर्माण नहीं करना पड़ता है।
हालांकि, एक कनेक्शन होने के कारण, फ़ाइल में डेटा के आलसी फ्लशियन की ओर जाता है, और एक विनाशकारी विफलता की स्थिति में डेटा हानि या भ्रष्टाचार की उच्च संभावना होती है।
मैं ऐप स्टार्टअप पर डेटाबेस के लिए "डमी" कनेक्शन खोलता हूं और वह कनेक्शन हमेशा खुला रहता है लेकिन शायद ही कभी या कभी भी इसका उपयोग नहीं किया जाता है। यदि आप करेंगे तो यह इंजन "primed" रखता है। वास्तविक डेटा एक्सेस के लिए, मैं एक अलग कनेक्शन का उपयोग करता हूं और मैं किस गतिविधि को कर रहा हूं, इस आधार पर राज्य का प्रबंधन करता हूं, आम तौर पर इसे कई प्रश्नों (एक छद्म लेनदेन यदि आप करेंगे) में खुलते हैं, लेकिन इसे अनिश्चित काल तक नहीं छोड़ते हैं।
आप आलसी फ्लशिंग व्यवहार को दो तरीकों से बदल सकते हैं। जब आप 'SqlCeTransaction' पर 'Commit' को कॉल करते हैं, तो आप लेनदेन को तुरंत फ़्लश करने के लिए' CommitMode.Imedimediate 'कर सकते हैं (http://msdn.microsoft.com/en-US/library/esdw1h9d.aspx)। कनेक्शन स्ट्रिंग पर एक 'फ्लश अंतराल' विकल्प भी है (http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceconnection.connectionstring.aspx)। –
"primed" से आपका क्या मतलब है ?? – pdiddy
मैं इस पर किसी भी सार्वजनिक दस्तावेज़ की तलाश में था, लेकिन मुझे लगता है कि एसक्यूएल सीई टीम पर एक देव से एक निजी ईमेल है। असल में डेटाबेस से पहला कनेक्शन कुछ वस्तुओं को आंतरिक रूप से प्रारंभ करता है और हर दूसरे कनेक्शन का उपयोग करता है। एक कनेक्शन बनाना और धारण करना उन सभी ऑब्जेक्ट्स को बाद के कनेक्शन (जैसे प्रदर्शन में सुधार) द्वारा उपयोग के लिए बनाता है। – ctacke