3

WP8用のSQLiteライブラリを使用しようとしています。

テーブルを定義しました:

class ShoppingItem
{
  [SQLite.PrimaryKey]
  public int Id {get; set;}
  public string Name {get; set;}
  public string Shop {get; set;}
  public bool isActive {get; set;}
}

http://www.sqlite.org/autoinc.htmlによると、の値が指定さIdれていない場合、値はsqliteによって自動的に割り当てIdられます。右?

だから私は新しいエントリを挿入しようとします

using (var db = new SQLiteConnection(m_DatabasePath)) {
    db.Insert(new ShoppingItem() {
      Name = anItem,
      Shop = aShop,
      isActive = aIsActive,
    });
}

最初のアイテムを挿入すると、ID0が取得されます。2番目の項目を挿入すると、すばらしいメッセージ「Constraint」を含むSQLiteExceptionが発生します。では、IDを指定せずに新しいエントリを挿入するにはどうすればよいですか?

ところで:別の解決策として、idにnull値を追加しようとしましたが、これによりコンパイルエラーが発生しました。:(

...
db.Insert(new ShoppingItem() {
  Id = null, // <- does not compile
  Name = anItem,
...
4

1 に答える 1

4

フィールドが自動インクリメントShoppingItemされていることを知らないため、デフォルト値のゼロが割り当てられます。

使用する:

[SQLite.PrimaryKey, SQLite.AutoIncrement]
public int Id {get; set;}
于 2013-03-18T10:40:03.323 に答える