Simple.Data Sqlite Insert returns Null



Im 使用 Simple.Data 将数据插入 Sqlite 数据库。我在维基上读到插入返回插入的数据。我需要获取最新的行 ID(标识)。但我得到的是空。

使用 NuGet 中的稳定版本。

var db = Database.OpenFile("Database.db");
var x = db.Scan.Insert(Name:"Test", Description:"test", CreationDate:DateTime.Now, DocumentDate:DateTime.Now, ModifiedDate:DateTime.Now);

数据库架构:

CREATE TABLE Scan ( 
    ID           INTEGER         PRIMARY KEY,
    Name         NVARCHAR( 50 )  NOT NULL,
    Description  TEXT,
    CreationDate DATETIME        NOT NULL,
    DocumentDate DATETIME        NOT NULL,
    ModifiedDate DATETIME        NOT NULL 
);

这甚至适用于SQLite吗?如果不是,检索插入记录的行 ID 的最佳方法是什么?

有同样的"问题"。问题出在您的架构中。

您必须将标识添加到主键列:

ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,

然后你得到该行,你可以用它创建一个新对象:

var x = db.Scan.Insert(Name:"Test", Description:"test", CreationDate:DateTime.Now, DocumentDate:DateTime.Now, ModifiedDate:DateTime.Now);
return new Scan { ID = (int)x.ID, Name = x.Name, ... }

来自维基:

如果在表上定义了 IDENTITY 列,则 插入 方法都将返回从 数据库,因此设置了所有默认值。在 0.4 中,支持其他 将添加获取插入行的方法。

相关内容

  • 没有找到相关文章