首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite-net-pcl -始终返回ID为0 (Xamarin)

SQLite-net-pcl -始终返回ID为0 (Xamarin)
EN

Stack Overflow用户
提问于 2017-01-20 19:02:51
回答 5查看 4.2K关注 0票数 7

由于Android7.0的SQlite问题,我最近从SQLite.NET迁移到了SQLite-net-pcl。

在这个过程中,我已经更新了所有的库,并且所有的插入/删除等都运行得很好。

我唯一的问题是,每次我从数据库中检索一个条目时,它的ID总是为0。这会导致更新项目时出现问题。以前有没有人遇到过这个问题?

代码语言:javascript
复制
 [SQLite.PrimaryKey, SQLite.AutoIncrement]
    public int ID { get; set; }
    public string objectId { get; set; }
    public DateTime createdAt { get; set; }
    public DateTime updatedAt { get; set; }
    public string Title { get; set; }

提前谢谢。

EN

回答 5

Stack Overflow用户

发布于 2017-09-29 00:49:52

请尝试使用这个,这对我很有效

使用SQLite.Net.Attributes的

代码语言:javascript
复制
  [PrimaryKey, AutoIncrement]
    public int? Id { get; set; }
票数 5
EN

Stack Overflow用户

发布于 2017-08-09 17:53:33

几乎都有同样的情况。所有行都返回id为0

代码语言:javascript
复制
class ToDo : Java.Lang.Object
{
    [PrimaryKey, AutoIncrement]
    public int ID { get; }

除了我只是忘了在属性中键入set;。

有一件事可能会对解决这个问题的人有所帮助,那就是使用GetMapping()方法来获取有关使用CreateTable()创建表时所使用的映射的一些信息。举个例子:

代码语言:javascript
复制
        Toast.MakeText(this, db.GetMapping<ToDo>().TableName.ToString(), ToastLength.Long).Show();
        Toast.MakeText(this, db.GetMapping<ToDo>().HasAutoIncPK.ToString(), ToastLength.Long).Show();

使用这个,我发现我的表上没有设置AutoIncrement (HasAutoIncPK = false)。

票数 2
EN

Stack Overflow用户

发布于 2017-07-18 12:33:34

查看您是否使用CreateComand(query)ExecuteNonQuery()方法创建了该表。如果是这种情况,请使用CreateTable<Type>()方法创建表。通过所述方法在创建表时初始化主键和自动增量属性

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41762097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档