SQLite自增从0开始然后进程终止

SQLite auto increment starts with 0 and then the process is terminated

我正在尝试在 WinForms 中使用 SQLite。所以我创建了一个名为 Artist 的 table,它有 2 个名为 ArtistIdName 的列。 ArtistId的属性是:INTEGER PRIMARY AUTOINCREMENT.

在foreach循环中,如果我手动给值,没有问题。

    LtoSQLiteDataContext oc = new LtoSQLiteDataContext();
    int i = 1;
    foreach (var pdfs in articles)
    {
       var r = new PdfReader(pdfs);
       var title = r.Info["Title"].Trim();
       var m = new Artist
       {
                ArtistId = i,
                Name = title
        };
            oc.Artists.InsertOnSubmit(m);
            oc.SubmitChanges();
     i++;
     }

但是如果我像 //ArtistId = i; 一样忽略 ArtistId,在第一条记录中,ArtistId 得到 0 并且进程终止。这是截图:

我知道在 MySQL 和 MsSQL 中,自动递增字段的值永远不会被写入。因为它在序列中得到数字。 我不知道,自动递增属性如何正确工作。

确保为 ArtistId 属性 生成的代码如下所示(打开 *.Designer.cs 文件):

[Column(Name = @"ArtistId ", Storage = "_ArtistId", CanBeNull = false, DbType = "INTEGER NOT NULL", IsDbGenerated = true, IsPrimaryKey = true)]
   public long ArtistId 
   {...}

如果不是,请打开您的 LinqConnect 模型并更改 ArtistId 属性(通过 double-clicking 打开 ArtistId 属性 的属性):

  • 设置实体键 = True
  • 设置自动生成的值 = True
  • 保存模型。

如果这没有帮助,请 contact us 测试项目(包括 LinqConnect 模型和测试数据库文件),以便我们能够更清楚地调查您的场景并找到适合您的解决方案最短的时间。