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のSQLiteADO.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);
}
テーブルのParentCategoryIdフィールドをInt32にキャストできないため、実行されますか?ParentCategoryId。また、ADO.NET ExecuteReaderを使用すると、フィールドでnull許容値をいつでも確認でき、外部キーが設定されていない場合はnull値になります。したがって、このテーブルの適切なデータマッピングを探しています。