2015-01-11 5 views
5

शीर्षक यह कहता है। (स्पष्ट होने के लिए, SQLite.NET होस्ट किया गया है here)क्या अपरिवर्तनीय रिकॉर्ड प्रकारों के साथ SQLite.NET का उपयोग करना संभव है?

सभी उदाहरण उत्परिवर्तनीय रिकॉर्ड प्रकारों के साथ काम करते हैं, जिसका अर्थ है कि उनके पास प्रत्येक संपत्ति परिभाषा में { get; set; } है। मैं अपने प्रोजेक्ट में जहां संभव हो वहां म्यूटेबल प्रकारों से छुटकारा पाना चाहता हूं, लेकिन SQLite.NET एक संभावित बाधा की तरह दिखता है।

यदि मैं System.String प्रकार के 1 कॉलम के साथ एक क्वेरी परिणाम प्राप्त करने का प्रयास करता हूं, तो यह विफल रहता है, उदाहरण के लिए। तो क्या SQLite.NET प्रॉपर्टी सेटर्स के बजाय कन्स्ट्रक्टर का उपयोग करना संभव है, या को SQLite.NET में डेटा पुनर्प्राप्त करने और संग्रहीत करने के लिए म्यूटेबल प्रकारों का उपयोग करना है?

उत्तर

5

मैं निश्चित रूप से यह नहीं कह सकता कि क्या आप गुणों के बजाय SQLLite उपयोग कन्स्ट्रक्टर बना सकते हैं। उस ने कहा, मुझे बहुत संदेह है।

गुणों का उपयोग अधिक आसान है, क्योंकि आप कॉलम नाम से मेल खाने वाले उचित सदस्य को खोजने के लिए प्रतिबिंब का उपयोग कर सकते हैं। एक कन्स्ट्रक्टर के साथ ऐसा करना बेहद दर्दनाक होगा। उस नोट पर, हर दूसरे ओआरएम बिल्कुल वैसे ही काम करता है।

तुम सच में अपरिवर्तनीय प्रकार का उपयोग करना चाहते हैं, तो आप ORM कि आबादी वाले वस्तुओं लेता है और एक अलग वस्तु केवल अपरिवर्तनीय गुण है कि रिटर्न के चारों ओर एक आवरण डाल करने के लिए की आवश्यकता होगी। यदि आप वास्तव में यह सुनिश्चित करना चाहते हैं कि कोई भी कभी भी परिवर्तनीय प्रकारों का उपयोग न करे, तो उन्हें internal बनाएं और उन्हें एक अलग असेंबली में रखें।

माना जाता है कि यह केवल अपरिवर्तनीय प्रकारों के लिए बहुत अधिक काम है, लेकिन ओआरएम की प्रकृति को देखते हुए, यह आपका बहुत ही एकमात्र विकल्प है।

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