Dapper ORM和SQLite執行查詢

dapper mapping orm sqlite

我的SQLite數據庫中有一個簡單的表:

CREATE TABLE ProductCategories
(
    Id INTEGER PRIMARY KEY AUTOINCREMENT,
    Name NVARCHAR(128) NOT NULL UNIQUE,
    ImageUrl NVARCHAR(256),
    ParentCategoryId INTEGER,
    FOREIGN KEY (ParentCategoryId) REFERENCES ProductCategories(Id) ON UPDATE CASCADE ON DELETE CASCADE
);

我使用免費版的Devart的SQLite ADO.NET提供程序。它運行正常,我考慮使用Dapper ORM,但我對類型映射有一點問題。對於ProductCategories表,我有類:

public class ProductCategory
{
    public Int32 Id { get; set; }
    public String Name { get; set; }
    public String ImageUrl { get; set; }
    public Int32? ParentCategoryId { get; set; }
}

所以,如果我嘗試這樣的事情:

var categories = connection.Query<ProductCategory>("SELECT * FROM ProductCategories");
foreach (var c in categories)
{
    Console.WriteLine(c.Id + " " + c.Name + " " + c.ImageUrl + " " + c.ParentCategoryId);
}

我得到一個execption,因為表中的ParentCategoryId字段無法轉換為Int32? ParentCategoryId。此外,如果我使用ADO.NET ExecuteReader,我總是可以檢查該字段是否為空,如果未設置外鍵,則為null。所以我正在為這個表尋找合適的數據映射。

一般承認的答案

我找到了解決方案。我剛剛將ParentCategoryId類型更改為INT,因為INTEGER是64位所以現在沒有強制轉換問題。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因