2010-05-03 9 views
6

मैं अपने अगले प्रोजेक्ट के लिए SQLite का उपयोग करने के बारे में सोच रहा हूं, लेकिन मुझे चिंता है कि यह उचित datetime और bit डेटा प्रकारों की कमी है।क्या एक ओआरएम का निर्धारण करने का कोई तरीका होगा कि SQLite कॉलम में दिनांक-समय या बूलियन शामिल हैं?

यदि मैं सी # कक्षाएं उत्पन्न करने के लिए डीबीएलिनक (या कुछ अन्य ओआरएम) का उपयोग करता हूं, तो क्या गुणों के डेटा प्रकार "डंब डाउन" होंगे? दिनांक-समय डेटा string या double के गुणों में रखा जाएगा? क्या बूलियन डेटा int के गुणों में रखा जाएगा?

यदि हां, तो क्या प्रभाव हैं? मैं एक परिदृश्य की कल्पना कर रहा हूं जहां मुझे कक्षाओं की एक पूरी दूसरी परत को अधिक विशिष्ट डेटा प्रकारों के साथ लिखना होगा और परिवर्तनों का एक गुच्छा करना होगा और शायद यह बुरा नहीं है जितना मुझे डर है। यदि आपके पास इस या इसी तरह के परिदृश्य के साथ कोई अनुभव है, तो आपने इसे कैसे संभाला?

उत्तर

1

SQLite ही केवल पांच डेटा प्रकार पहचानता है: NULL, INTEGER, REAL, TEXT, और BLOB। लेकिन यह आप किसी भी प्रकार के नाम है कि आप चाहते हैं की घोषणा की सुविधा देता है, तो आप

CREATE TABLE SomeTable (
    TimeAdded DATETIME, 
    SomeFlag BOOLEAN 
); 

लिख सकते हैं और अपने ORM प्रकार जिस तरह से आप करना चाहते हैं की व्याख्या कर सकते हैं।

मैंने SQLite के आस-पास एक सी ++ रैपर लिखा है, और सभी प्रकार के डेटाबेस मानों को एक प्रकार के प्रकार के साथ प्रस्तुत करने का अलग दृष्टिकोण लिया है। यह संस्करण विभिन्न प्रकारों के बीच रूपांतरण प्रदान करता है, इसलिए SqlValue("2010-05-03 01:01:04").AsTimestamp() अपेक्षित टाइमस्टैम्प ऑब्जेक्ट देता है।

+0

डेटा प्रकार के रूप में बस 'डेटाटाइम' और 'बिट' का उपयोग करके डीबीएलएनक के साथ चाल थी, धन्यवाद। – devuxer

0

मैं System.Data.SQLite और वीएस -2008 में डिज़ाइन टूल से उपयोग कर रहा हूं, यह मुझे डेटटाइम और बिट डेटा प्रकार देता है। हालांकि मुझे डीबीएलएनक के बारे में ज्यादा जानकारी नहीं है। लेकिन दिनांक समय और बिट डेटाटाइप्स SqlLite द्वारा समर्थित हैं

0

System.Data.SQLite ADO.NET प्रदाता में SQLiteMetaDataCollectionNames कक्षा है जो आपको एक विशिष्ट तालिका में कॉलम के बारे में विभिन्न मेटा-डेटा पुनर्प्राप्त करने की अनुमति देती है।

इसमें 'डेटाटाइप' संपत्ति शामिल है जो प्रत्येक कॉलम के 'संकेत' डेटा प्रकार (SQLite सख्त टाइपिंग लागू नहीं करती है) का वर्णन करती है। इसका उपयोग करने से ओआरएम को समकक्ष सी # प्रकार से/आवश्यक रूपांतरण करने की अनुमति मिल जाएगी।

0

मैंने ज़ेड फ्रेमवर्क में SQLite के लिए एडाप्टर पर काम किया।

SQLite तालिका के लिए मेटाडेटा और डेटा प्रकार प्राप्त करने के लिए, मैंने PRAGMA TABLE_INFO(<tablename>) का उपयोग किया और इसके आउटपुट को पार्स किया।

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

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