Dapper ORM et SQLite effectuent une requête

dapper mapping orm sqlite

Question

J'ai une table simple dans ma base de données 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
);

J'utilise la version gratuite du fournisseur SQLite ADO.NET de Devart. Cela fonctionne bien et je pense à utiliser Dapper ORM mais j'ai un petit problème avec le mappage de type. Pour la table ProductCategories, j'ai 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; }
}

Donc, si j'essaye quelque chose comme ça:

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

Je reçois une exécution parce que le champ ParentCategoryId de la table ne peut pas être converti en Int32? ParentCategoryId. Aussi, si j'utilise ExecuteReader ADO.NET, je peux toujours vérifier le champ nullable et il est nul si la clé étrangère n'est pas définie. Donc, je cherche un mappage de données correct pour cette table.

Réponse acceptée

J'ai trouvé la solution. Je viens de changer le type ParentCategoryId en INT car INTEGER est de 64 bits, maintenant il n'y a pas de problème de transtypage.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi