簡體   English   中英

Dapper,在 SQLite 表中插入記錄

[英]Dapper, Insert record in SQLite table

我試圖在 SQLite 表中插入一條記錄,但第一個字段保持NULL

首先,我在 Ssqlite 中創建了一個表:

CREATE TABLE Tests(id INTEGER, nr INTEGER);

然后我寫了這段代碼(目標框架:.NET 6.0):

using Dapper.Contrib.Extensions;
using System.Data.SQLite;


namespace ConsoleApp48
{
    public class Program
    {
        static void Main(string[] args)
        {
            SQLiteConnection sqlite_conn;
            sqlite_conn = new SQLiteConnection("Data Source=database.db;Version=3;New=True;Compress=True; ");
            sqlite_conn.Open();

            Test t;
            t = new Test() { id = 1, nr = 1 };
            sqlite_conn.Insert<Test>(t);
            t = new Test() { id = 5, nr = 5 };
            sqlite_conn.Insert<Test>(t);

            sqlite_conn.Close();
        }
    }

    public class Test
    {
        public int id { get; set; }
        public int nr { get; set; }
    }
}

在此之后我的數據庫的內容是:

sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE Test(id INTEGER, nr INTEGER);
CREATE TABLE Tests(id INTEGER, nr INTEGER);
INSERT INTO Tests VALUES(NULL,1);
INSERT INTO Tests VALUES(NULL,5);
COMMIT;
sqlite>

Test也存在,但這是一個小問題。 我認為表應該與類同名,所以我確實將表創建為Test ,但失敗時我創建了具有相同結構的表Tests

真正的問題是創建的記錄中的兩個 NULL 值。 為什么字段id沒有更新為正確的值( 15 )?

我試着找出我是否遺漏了一些明顯的東西,但沒有找到,我創建了這個最小的可復制示例。

using s 的相關信息:

  • Dapper.Contrib:版本 2.0.78
  • System.Data.Sqlite.Core:版本 1.0.116

添加主鍵解決了這個問題:

CREATE TABLE Tests(id INTEGER PRIMARY KEY NOT NULL, nr INTEGER);

(這提醒我我應該總是定義這樣的事情,即使我只有少量記錄......😉

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM