Xamarin.forms SQLite.NET PCL在自动增量主键的所有实例中返回0

Xamarin.forms SQLite.NET PCL在自动增量主键的所有实例中返回0,xamarin.forms,sqlite-net,sqlite-net-pcl,Xamarin.forms,Sqlite Net,Sqlite Net Pcl,我完全不明白这一点,因为我已经在Xamarin应用程序中使用这个库好几年了 我有一个基类,它包含在所有db项中通用的属性: public class BaseItem { [PrimaryKey, AutoIncrement] public int ID { get; set; } = 0; // SQLite ID public long CreatedTimeSeconds { get; set; } = DateTime.Now.ToUnixTimeS

我完全不明白这一点,因为我已经在Xamarin应用程序中使用这个库好几年了

我有一个基类,它包含在所有db项中通用的属性:

public class BaseItem
{
    [PrimaryKey, AutoIncrement]
    public int ID { get; set; } = 0;        // SQLite ID
    public long CreatedTimeSeconds { get; set; } = DateTime.Now.ToUnixTimeSeconds();
    public long ModifiedTimeSeconds { get; set; } = DateTime.Now.ToUnixTimeSeconds();
}
现在,我从中得出:

[Table("CategoryTable")]
public class Category : BaseItem
{
    public int CategoryTypeID { get; set; } = (int)CategoryType.Invalid;
    public string Name { get; set; } = string.Empty;
    public string Description { get; set; } = string.Empty;
}
以下是我所看到的内容的简化版本:

public class DBWorld
{
    ISQLiteService SQLite { get { return DependencyService.Get<ISQLiteService>(); } }

    private readonly SQLiteConnection _conn;
    
    public DBWorld()
    {
        _conn = SQLite.GetConnection("myapp.sqlite");    
    }

    public void TestThis()
    {
        _conn.CreateTable<Category>();
        
        var category = new Category();
        category.Name = "This Should Work";
        
        int recCount = connection.Insert(category);
        // at this point recCount shows as 1, and category.ID shows as zero.
        // I thought Insert was supposed to set the autoincrement primary key 
        
        // regardless, it should be set in the database, right? So...
        var categoryList = connection.Query<Category>($"SELECT * FROM {DBConstants.CategoryTableName}");
        // at this point categoryList[0] contains all the expected values, except ID = 0        
    }
} 

我显然错过了一些东西,但就我的一生而言,我不知道是什么…

就像在VisualStudio Xamarin世界中发生的许多其他奇怪的事情一样,当我稍后返回时,这一切都按照我们所有人的预期进行。我想Visual Studio只是太累了,需要重新启动。

您的意思是PrimaryKey没有自动递增?正确。但是,标准的Microsoft初始修复程序使其工作正常。我重新启动了我的电脑,一切正常。