2016-05-08 9 views
0

これは、SQLiteのテーブルの「ChallengeItem」と呼ばれる私のモデルである:SQLiteのキープロパティの問題

[AutoIncrement] 
    private int _key { get; set; } 

    public int Key 
    { 
     get { return _key; } 
     set { _key = value; OnPropertyChanged("Key");} 
    } 

    private bool _done; 

    public bool Done 
    { 
     get { return _done; } 
     set { _done = value; OnPropertyChanged("Done"); } 
    } 

私はこのコード行を含む「のDatabaseManager」というクラスを作成しました:

conn.CreateTable<Models.ChallengeItem>(); 
それはそれはない インクリメント、キー値が テーブル内のすべてのChallengeitem 0を滞在しているんことが判明Keyプロパティをチェックした後
  • 。これをどうすれば解決できますか?
  • チャレンジアイテムの完了プロパティが真であるテーブルの最後のアイテムを取得するにはどうすればよいですか?

答えて

0

あなたはSQLite-Net PCL(あなたのAPIのように見えます)を使用しているとします。

最初の質問: InsertOrReplaceとの特別なケースがあります:それは0有効なキーとDOEが自動それをインクリメントしませんと考えています。あなたはそのケースをチェックし、代わりに普通のInsertを使用するかもしれません。 this questionにさまざまな例があります。

また、SQLite FAQは、自動インクリメントはプライマリキーでのみ機能することを示しています。

2番目の質問:あなたは確かに、作成日などの追加のプロパティを使用する必要がありますので SQLテーブルは、任意の順序を保証するものではありません。 あなたが自動インクリメントIDを持っているとして、あなたは、単純なLINQクエリであること使用することがあります:

conn.Table<ChallengeItem>().Where(i => i.Done).OrderByDescending(i => i.Key); 
+0

私は公開鍵プロパティに[主キー、自動インクリメント]を追加し、今ではTY、キューが機能している、インクリメントなっています –