2013-07-15 12 views
6

N-10-KittensDb örnek çözümünü değiştiriyorum. SQLite veritabanı nasıl oluşturulacağını görüyorum, ancak varolan bir veritabanını kullanmak istiyorum. Veritabanını uygun UI veri klasörüne kopyalamam gerektiğini tahmin ediyorum. Belki Çekirdek projesinde yapılır? Ve eğer öyleyse, çalışan Exec'ye doğru yol nasıl enjekte edilir? Çekirdek birçok kullanıcı arayüzünde kullanılabilir mi? Veritabanının mevcut olup olmadığını veya kopyalanması gerekip gerekmediğini görmek için hangi yöntem çağrılır? DataService danMvvmCross ile önceden doldurulmuş bir SQLite veritabanını kopyalamanın tercih edilen yolu nedir?

Örnek:

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

Ben yolları Wpf vs Dokunma vs Telefon vs Android için farklı olduğuna inanıyoruz?

Lütfen beni Cirrious.MvvmCross.Plugins.Sqlite for Phone veya Wpf kullanan bir kod parçasına yönlendirin.

size Dan

varsayılan olarak her platformu platformu için uygun bir klasör yerde bir veritabanı oluşturur

cevap

3

ederiz - örneğin Dokunmatik kullanır: - ayrıca platforma özel konumlarda varsayılan olarak çalışır Bu -

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 den/okuma dosyaları yazmak için MvvmCross Dosya eklentisi paket yapar ama iki mükemmel aynı olmayabilir - mesela bkz: Çünkü bu uyuşmazlığı https://github.com/slodge/MvvmCross/blob/v3/Plugins/Cirrious/File/Cirrious.MvvmCross.Plugins.File.Touch/MvxTouchFileStore.cs#L22

den

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

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

, platformlarda aynı veritabanına özgü kopya kodu paylaşmak için daha kolay sadece her platformda kendi platforma özel kopyasını enjekte etmek bulabilir - platforma özel hizmetler enjekte etme hakkında daha fazla bilgi için, bkz. http://slodge.blogspot.co.uk/2013/06/n31-injection-platform-specific.html

İlgili konular