2014-02-11 61 views
0

使用Simple.Data將數據插入Sqlite數據庫。我在wiki上讀到Insert插入的數據。我需要獲取最新的rowID(身份)。但是我得到空值。Simple.Data Sqlite插入返回空

使用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); 

DB模式:

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的工作?如果不是最好的方式來檢索插入記錄的rowID?

回答

2

有相同的「問題」。 問題在於你的模式。

你必須身份添加到您的主鍵列:

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中,支持其他的 獲取插入行的方式將被添加。

+0

謝謝,作品完美!我怎麼能錯過這個... – JustFogMaxi