我试图在WinForms中使用SQLite。所以我创建了一个名为Artist
的表,它有2列名为ArtistId
,Name
。 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中,自动增量字段的值永远不会被写入。因为它在序列中得到数字。 我不知道,自动增量功能如何正常工作。
答案 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属性的属性):
如果这没有帮助,请contact us与测试项目(包括LinqConnect模型和测试数据库文件),以便我们能够更清楚地调查您的方案并为您找到解决方案最短的时间。