2017-06-18 12 views
1

XamarinのSQLiteについていくつかのスレッドを読んだが、まだセットアップできない。SQLiteNetExtensionsが適切な方法で設定されている。私は現在、ターゲットフレームワークAndroid 7.1(APIレベル25 - ヌガット)でアンドロイドアプリを開発しています。Android-App用XamarinでSQLiteNetextensionsを使用

誰でも私が間違っていることを教えてもらえますか?

  1. 私はnugetパッケージインストール:その後、私は私のコードを設定https://bitbucket.org/twincoders/sqlite-net-extensions

  2. :によると

    Install-Package SQLiteNetExtensions -Version 2.0.0-alpha2 -Pre

    Install-Package SQLite.Net-PCL -Version 3.1.1

    を。

    using SQLite.Net.Attributes; 
    using SQLiteNetExtensions.Attributes; 
    using System; 
    
    namespace AppName.Resources.Model 
    { 
        public class Entry 
        { 
        [PrimaryKey, AutoIncrement] 
        public int Id { get; set; } 
        [ForeignKey(typeof(Stock))] 
        public int StockId { get; set; } 
        public DateTime Date { get; set; } 
        public double Amount { get; set; } 
        } 
    } 
    


    using SQLite.Net.Attributes; 
    using SQLiteNetExtensions.Attributes; 
    using System; 
    using System.Collections.Generic; 
    
    namespace AppName.Resources.Model 
    { 
        public class Stock 
        { 
        [PrimaryKey, AutoIncrement] 
        public int Id { get; set; } 
        public string Name { get; set; } 
        public DateTime LastUpdated { get; set; } 
        [OneToMany(CascadeOperations = CascadeOperation.All)] 
        public List<Entry> Entrys { get; set; } 
        } 
    } 
    


    using Android.Util; 
    using AppName.Resources.Model; 
    using SQLite.Net; 
    using SQLite.Net.Platform.XamarinAndroid; 
    using SQLiteNetExtensions.Extensions; 
    using System.Collections.Generic; 
    using System.IO; 
    
    namespace AppName.Resources.DataHelper 
    { 
        public class DataBase 
        { 
        string folder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); 
        public bool CreateDataBase() 
        { 
         try 
         { 
         using (var stocksDBConnection = new SQLiteConnection(new SQLitePlatformAndroid(), Path.Combine(folder, "Stock.db"))) 
         { 
          stocksDBConnection.CreateTable<Entry>(); 
          stocksDBConnection.CreateTable<Stock>();  
          return true; 
         } 
         } 
         catch (SQLiteException ex) 
         { 
         Log.Info("SQLiteEx", ex.Message); 
         return false; 
         } 
        } 
    
        public bool InsertIntoTableStock(object stock) 
        { 
         try 
         { 
         using (var stocksDBConnection = new SQLiteConnection(new SQLitePlatformAndroid(), Path.Combine(folder, "Stock.db"))) 
         { 
          stocksDBConnection.InsertWithChildren(stock); 
          return true; 
         } 
         } 
         catch (SQLiteException ex) 
         { 
         Log.Info("SQLiteEx", ex.Message); 
         return false; 
         } 
        } 
        ... 
    
  3. これらの参考文献はnugetにより添加した:

    SQLite-net

    SQLite.Net

    SQLite.Net.Platform.XamarinAndroid

    SQLiteNetExtensions

    SQLitePCLRaw.Batteries_green

    SQLitePCLRaw.Core

    SQLitePCLRaw.lib.e_sqlite3

    SQLitePCLRaw.provider.e_sqlite3

  4. Occuringエラー:

    'SQLiteConnection' does not contain a definition for 'InsertWithChildren' and the best extension method overload 'WriteOperations.InsertWithChildren(SQLiteConnection, object, bool)' requires a receiver of type 'SQLiteConnection'

    'SQLiteConnection' does not contain a definition for 'GetAllWithChildren' and the best extension method overload 'ReadOperations.GetAllWithChildren(SQLiteConnection, Expression>, bool)' requires a receiver of type 'SQLiteConnection'

はまあそれは私が得るどのくらいです。何をすべきかを知っている人はいませんか?おそらく競合する参照を削除しますか?

答えて

0

私がいることが分かったいくつかの研究の後:

Install-Package SQLiteNetExtensions -Version 2.0.0-alpha2 -Pre 

Install-Package sqlite-net-pcl 

代わりの

Install-Package SQLite.Net-PCL -Version 3.1.1 

しかし、すべての参照を削除するソリューションを清掃し、を再インストールした後に依存2つの必要なパッケージはありませんはもう使用できません。 代わりSQLiteを使用しようとすると:それはシームレスVSとのAndroidアプリを開発することも可能です場合

'SQLiteConnection' does not contain a definition for 'InsertWithChildren' and the best extension method overload 'WriteOperations.InsertWithChildren(SQLiteConnection, object, bool)' requires a receiver of type 'SQLiteConnection'

が、私は興味があります。すべてがセットアップに数年かかるからです。


EDIT:

まあ、**ソリューションはさえなかったとしても、新しいプレリリース(アルファ)を使用していたAの痛みのいくつかの日後公式ページで参照されています。現在、私は満足しています。 :)

Install-Package SQLiteNetExtensions-netstandard -Version 2.0.0-alpha3 -Pre 

誰でもこれを必要とすることを望みます。

+0

これに関するニュースはありますか?私はまだ更新されたsqlitenetextensionsが働くことができません... –

+0

私の "編集"私のためのトリックでした。それが役に立てば幸い。 – Muffex

0

[OK]を少し検索した後、私はこのエクステンションの作成者がMvvmCrossというパターンを使ってそれを開発したことを知りました。そのパターンモデルを使用していない限り、このエラーが発生します。

MvvmCross以外のユーザーの場合は、ソースファイルを再構築してプロジェクトで参照する必要があります。また、事前にコンパイルしたものを使用しないでください。

次のリンクの4番目のポストに移動 https://forums.xamarin.com/discussion/20117/sqlite-net-extensions-and-sqliteconnectionここで彼は非常に簡単な方法で彼のポストのソースから再構築する方法を教えてくれます。

私はVisual StudioとXamarinをインストールして自分で試してみるまで待つことはできませんが、正確な手順を教えてください。 それまでは、賞賛するまでに時間がかかります!ここで

+0

あなたの答えをありがとう。しかし、現在、私は正しい軌道に乗っているかどうかはわかりません。なぜなら、あなたはかなり古いものに頼っているからです。彼らはまだSQLiteを使っています。Net-PCLナゲットパッケージ。多分私は間違っている... – Muffex

+0

@Muffex私の新しい答えを見て、それが役立つかどうかを見てください。 –

0

は、[OK]を、私はそのわずかバージョンの問題は、私はちょうどあなたのコードを試してみましたので、それは私のために正常に動作することを確信しているhttps://bitbucket.org/twincoders/sqlite-net-extensions/downloads/ をクリックし、ダウンロードリポジトリ上のソースファイルへのリンクです。 Visual StudioのNuGetパッケージマネージャウィンドウからSQliteNetExtensions v 1.3.0パッケージをインストールしてみてください。すべての依存関係をインストールします。ここで

は私がやったことです - 同じことを行うと、このことができますかどうかを確認してください:

  1. 私は(私はコミュニティ2017を使用しているVisual Studioの で新しいAndroidのシングルビューアプリケーションプロジェクトを作成した - しかし、それは問題ありません)
    StockEntryDatabaseクラスを作成し、指定した
    コードをそれぞれ貼り付けました。
  2. NuGet Package ManagerからSQliteNetExtensions v 1.3.0パッケージのみをインストールしましたenter image description here 以下の依存関係をインストールしましたが、インストールしていません。ここで
    SQLite.Net-PCL v3.0.5
    NewtonSoft.Json v6.0.8

私はちょうどSQliteNetExtensions v 1.3.0パッケージをインストールした後に得たものです。あなたはその私が更新1でも疲れv3.1.1SQLite.Net-PCL v3.0.5のアップデートを示し、その最大あなたには、更新するかしないので、それはまだ、うまく動作します見ることができるように

enter image description here

ここでは、その動作がうまくいくという少しの証拠があります。私もコンパイルし、エミュレータでアプリを実行し、それはすべて正常に動作します。

enter image description here

+1

あなたの答えをありがとう。解決策は、SQLiteNetExtensions-netstandard -Version 2.0.0-alpha3を使用することでした。おそらく、https://bitbucket.org/twincoders/sqlite-net-extensions/issues/117/support-netstandardに記載されている解決策も有効です。 – Muffex

+1

@Muffexそれは素晴らしいと幸運です –

関連する問題