SQLite自动增量从0开始,然后该进程终止

时间:2016-01-03 11:32:16

标签: c# winforms sqlite devart

我试图在WinForms中使用SQLite。所以我创建了一个名为Artist的表,它有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并终止进程。这是截图: enter image description here

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

1 个答案:

答案 0 :(得分:1)

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

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

如果没有,请打开LinqConnect模型并更改ArtistId属性(通过双击打开ArtistId属性的属性):

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

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