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);
}

テーブルのParentCategoryIdフィールドをInt32にキャストできないため、私は実行を停止しますか? ParentCategoryId。また、私は、ADO.NET ExecuteReaderを使用する場合、私はいつもnullableのフィールドをチェックすることができますし、外部キーが設定されていない場合はnullです。だから私はこのテーブルの適切なデータマッピングを探しています。

受け入れられた回答

私は解決策を見つけた。 INTEGERは64ビットなので、キャストの問題はないので、ParentCategoryIdタイプをINTに変更しました。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ