Dapper ORM e SQLite eseguono query

dapper mapping orm sqlite

Domanda

Ho una tabella semplice nel mio database 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
);

Uso la versione gratuita del provider ADO.NET SQLite di Devart. Funziona bene e penso all'utilizzo di Dapper ORM, ma ho avuto un piccolo problema con il mapping dei tipi. Per la tabella ProductCategories ho la classe:

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

Quindi se provo qualcosa del genere:

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

Ottengo un'espressione perché il campo ParentCategoryId della tabella non può essere convertito in Int32? ParentCategoryId. Inoltre, se utilizzo ADO.NET ExecuteReader, posso sempre controllare il campo per nullable ed è null se la chiave esterna non è impostata. Quindi sto cercando una corretta mappatura dei dati per questa tabella.

Risposta accettata

Ho trovato la soluzione. Ho appena cambiato il tipo ParentCategoryId in INT perché INTEGER è a 64 bit, quindi ora non c'è alcun problema di trasmissione.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché