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.htmlId,如果没有给出值,则 sqlite会自动分配一个值Id。对?

所以我尝试通过

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

当我插入第一个项目时,它的 ID 为 0。好吧,为什么不呢。当我插入第二个项目时,我得到一个带有令人敬畏的消息“约束”的 SQLiteException。那么如何在不提供 id 的情况下插入新条目?

顺便说一句:作为替代解决方案,我尝试将空值添加到 id,但这导致编译错误。:(

...
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 回答