[英]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
沒有更新為正確的值( 1
或5
)?
我試着找出我是否遺漏了一些明顯的東西,但沒有找到,我創建了這個最小的可復制示例。
using
s 的相關信息:
添加主鍵解決了這個問題:
CREATE TABLE Tests(id INTEGER PRIMARY KEY NOT NULL, nr INTEGER);
(這提醒我我應該總是定義這樣的事情,即使我只有少量記錄......😉
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.