Dapper ORM和SQLite执行查询

时间:2012-11-20 19:55:35

标签: sqlite orm mapping dapper

我的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。 所以我正在为这个表寻找合适的数据映射。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我刚刚将ParentCategoryId类型更改为INT,因为INTEGER是64位,所以现在没有强制转换问题。