Entity Framework
SQLite के साथ इकाई फ्रेमवर्क
खोज…
परिचय
SQLite एक स्व-निहित, सर्वर रहित, ट्रांसेक्शनल SQL डेटाबेस है। यह .NET अनुप्रयोग के भीतर एक स्वतंत्र रूप से उपलब्ध .NET SQLite लाइब्रेरी और एंटिटी फ्रेमवर्क SQLite प्रदाता दोनों का उपयोग करके उपयोग किया जा सकता है। यह विषय एंटिटी फ्रेमवर्क SQLite प्रदाता के सेटअप और उपयोग में जाएगा।
SQLite प्रदाता के साथ इकाई फ्रेमवर्क का उपयोग करने के लिए एक परियोजना की स्थापना
एंटिटी फ्रेमवर्क लाइब्रेरी केवल एक SQL सर्वर प्रदाता के साथ आती है। SQLite का उपयोग करने के लिए अतिरिक्त निर्भरता और कॉन्फ़िगरेशन की आवश्यकता होगी। सभी आवश्यक निर्भरताएँ NuGet पर उपलब्ध हैं।
SQLite प्रबंधित लाइब्रेरी स्थापित करें
सभी प्रबंधित अवसादों को NuGet पैकेज प्रबंधक कंसोल का उपयोग करके स्थापित किया जा सकता है। कमांड Install-Package System.Data.SQLite
चलाएँ।
जैसा कि ऊपर दिखाया गया है, System.Data.SQLite
स्थापित करते समय, सभी संबंधित प्रबंधित लाइब्रेरी इसके साथ स्थापित की जाती हैं। इसमें System.Data.SQLite.EF6
, SQLite के लिए EF प्रदाता शामिल हैं। प्रोजेक्ट अब SQLite प्रदाता का उपयोग करने के लिए आवश्यक असेंबली का भी संदर्भ देता है।
जिसमें अनमैन्डेड लाइब्रेरी शामिल है
SQLite प्रबंधित लाइब्रेरी SQLite.Interop.dll
नामक एक अप्रबंधित असेंबली पर निर्भर हैं। यह SQLite पैकेज के साथ डाउनलोड किए गए पैकेज असेंबली के साथ शामिल है, और जब आप प्रोजेक्ट बनाते हैं तो वे स्वचालित रूप से आपकी बिल्ड निर्देशिका में कॉपी हो जाते हैं। हालाँकि, क्योंकि यह अप्रबंधित है, यह आपकी संदर्भ सूची में शामिल नहीं होगा। लेकिन ध्यान दें, यह असेंबली ज्यादातर SQLite असेंबली के काम करने के लिए आवेदन के साथ वितरित की जाती है।
नोट: यह असेंबली थोड़ा-सा निर्भर है, जिसका अर्थ है कि आपको प्रत्येक बिटनेस के लिए एक विशिष्ट असेंबली को शामिल करने की आवश्यकता होगी जिसे आप समर्थन करना चाहते हैं (x86 / 6464)।
परियोजना के App.config का संपादन
SQLite को Entity Framework प्रदाता के रूप में उपयोग करने से पहले app.config
फ़ाइल को कुछ संशोधनों की आवश्यकता होगी।
आवश्यक सुधार
पैकेज को स्थापित करते समय, app.config
फ़ाइल SQLite और SQLite EF के लिए आवश्यक प्रविष्टियों को शामिल करने के लिए स्वचालित रूप से अपडेट की जाती है। दुर्भाग्य से इन प्रविष्टियों में कुछ त्रुटियां हैं। इसे सही ढंग से काम करने से पहले उन्हें संशोधित करने की आवश्यकता है।
सबसे पहले, config फाइल में DbProviderFactories
तत्व का पता लगाएं। यह system.data
तत्व के भीतर है और इसमें निम्नलिखित शामिल होंगे
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
एकल प्रविष्टि को शामिल करने के लिए इसे सरल बनाया जा सकता है
<DbProviderFactories>
<add name="SQLite Data Provider" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
इसके साथ, हमने निर्दिष्ट किया है कि EF6 SQLite प्रदाताओं को SQLite कारखाने का उपयोग करना चाहिए।
SQLite कनेक्शन स्ट्रिंग जोड़ें
कनेक्शन स्ट्रिंग्स को मूल तत्व के भीतर कॉन्फ़िगरेशन फ़ाइल में जोड़ा जा सकता है। SQLite डेटाबेस तक पहुँचने के लिए कनेक्शन स्ट्रिंग जोड़ें।
<connectionStrings>
<add name="TestContext" connectionString="data source=testdb.sqlite;initial catalog=Test;App=EntityFramework;" providerName="System.Data.SQLite.EF6"/>
</connectionStrings>
यहां ध्यान देने योग्य बात provider
। इसे System.Data.SQLite.EF6
सेट किया गया है। यह EF को बताता है कि जब हम इस कनेक्शन स्ट्रिंग का उपयोग करते हैं, तो हम SQLite का उपयोग करना चाहते हैं। निर्दिष्ट data source
केवल एक उदाहरण है और आपके SQLite डेटाबेस के स्थान और नाम पर निर्भर करेगा।
आपकी पहली SQLite DbContext
सभी इंस्टॉलेशन और कॉन्फ़िगरेशन पूर्ण होने के साथ, आप अब एक DbContext
का उपयोग करना शुरू कर सकते हैं जो आपके SQLite डेटाबेस पर काम करेगा।
public class TestContext : DbContext
{
public TestContext()
: base("name=TestContext") { }
}
name=TestContext
निर्दिष्ट करके, मेरा संकेत है कि app.config
फ़ाइल में स्थित TestContext कनेक्शन स्ट्रिंग का उपयोग संदर्भ बनाने के लिए किया जाना चाहिए। उस कनेक्शन स्ट्रिंग को SQLite का उपयोग करने के लिए कॉन्फ़िगर किया गया था, इसलिए यह संदर्भ SQLite डेटाबेस का उपयोग करेगा।