C# SQLite自动递增从0开始,然后进程终止

C# SQLite自动递增从0开始,然后进程终止,c#,winforms,sqlite,devart,C#,Winforms,Sqlite,Devart,我正在尝试在WinForms中使用SQLite。因此,我创建了一个名为Artist的表,它有两列名为ArtistId,Name。ArtistId的属性是:整数主自动增量 在foreach循环中,如果我手动给出值,就没有问题 LtoSQLiteDataContext oc = new LtoSQLiteDataContext(); int i = 1; foreach (var pdfs in articles) { var r = new PdfRe

我正在尝试在WinForms中使用SQLite。因此,我创建了一个名为
Artist
的表,它有两列名为
ArtistId
Name
。ArtistId的属性是:
整数
自动增量

在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 like
//ArtistId=I
,在第一条记录中,
ArtistId
获取
0
,进程终止。以下是截图:

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

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

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

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

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

读这本书。并显示实际的表创建语句。我从头到尾都在阅读,但理解的不多。我的母语不是英语,可能是它起源于此。也许真的很困惑。我很抱歉迟到了。谢谢。我刚刚处理好这个问题。非常感谢你。
[Column(Name = @"ArtistId ", Storage = "_ArtistId", CanBeNull = false, DbType = "INTEGER NOT NULL", IsDbGenerated = true, IsPrimaryKey = true)]
   public long ArtistId 
   {...}