2013-07-15 9 views
6

कॉपी करने का पसंदीदा तरीका क्या है I N-10-KittensDb नमूना समाधान संशोधित कर रहा हूं। मैं SQLite डेटाबेस बनाने का तरीका देखता हूं, लेकिन मैं मौजूदा डेटाबेस का उपयोग करना चाहता हूं। मुझे लगता है कि मुझे डेटाबेस को उचित यूआई डेटा फ़ोल्डर में कॉपी करने की आवश्यकता है। शायद यह कोर परियोजना के भीतर किया जाता है? और यदि ऐसा है तो चल रहे एक्ज़ेक में सही पथ कैसे इंजेक्शन दिया गया है? चूंकि कई यूआई में कोर का उपयोग किया जा सकता है? यह देखने के लिए किस विधि को कॉल किया गया है कि डेटाबेस मौजूद है या कॉपी करने की आवश्यकता है?एमवीवीएमक्रॉस के साथ प्रीफ़िल्ल्ड SQLite डेटाबेस

DataService से

नमूना:

public DataService(ISQLiteConnectionFactory factory) 
{ 
    const string file = "Cats.sldb"; 
    var connection = factory.Create(file); 
    connection.CreateTable<Kitten>(); 
} 

मेरा मानना ​​है कि रास्तों टच बनाम WPF बनाम फोन बनाम Android के लिए अलग हैं?

कृपया मुझे कोड के नमूना टुकड़े पर निर्देशित करें जो फोन या डब्लूपीएफ के लिए Cirrious.MvvmCross.Plugins.Sqlite का उपयोग करता है।

धन्यवाद दान

उत्तर

3

डिफ़ॉल्ट रूप से प्रत्येक मंच एक फ़ोल्डर स्थान प्लेटफ़ॉर्म के लिए उचित में एक डेटाबेस बनाता है - जैसे टच का उपयोग करता है: - यह भी मंच विशिष्ट स्थानों में डिफ़ॉल्ट रूप से चल रही है -

public ISQLiteConnection Create(string address) 
    { 
     var path = Environment.GetFolderPath(Environment.SpecialFolder.Personal); 
     return new SQLiteConnection(Path.Combine(path, address)); 
    } 

से https://github.com/slodge/MvvmCross/blob/v3/Plugins/Cirrious/Sqlite/Cirrious.MvvmCross.Plugins.Sqlite.Touch/MvxTouchSQLiteConnectionFactory.cs#L18

पढ़ने/फ़ाइलें लिखने के लिए, MvvmCross एक फ़ाइल प्लगइन बंडल करता है लेकिन दो पूरी तरह से मेल न खाते हों - जैसे देखें:

protected override string FullPath(string path) 
    { 
     if (path.StartsWith(ResScheme)) 
      return path.Substring(ResScheme.Length); 

     return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), path); 
    } 

https://github.com/slodge/MvvmCross/blob/v3/Plugins/Cirrious/File/Cirrious.MvvmCross.Plugins.File.Touch/MvxTouchFileStore.cs#L22

इस बेमेल की वजह से, प्लेटफार्मों पर एक ही डाटाबेस विशिष्ट प्रतिलिपि कोड साझा करने के लिए आप इसे आसान सिर्फ एक मंच पर अपने खुद के मंच विशिष्ट प्रतिलिपि सुई मिल सकता है - प्लेटफॉर्म विशिष्ट सेवाओं को इंजेक्शन देने के लिए, http://slodge.blogspot.co.uk/2013/06/n31-injection-platform-specific.html

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