Dapper ORM y SQLite realizan consultas

dapper mapping orm sqlite

Pregunta

Tengo una tabla simple en mi base de datos 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 versión gratuita del proveedor SQLite ADO.NET de Devart. Funciona bien y pienso en usar Dapper ORM, pero tengo un pequeño problema con el mapeo de tipos. Para la tabla ProductCategories tengo la clase:

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

Entonces, si pruebo algo como esto:

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

Obtengo una excepción porque el campo ParentCategoryId de la tabla no se puede convertir a Int32? ParentCategoryId. Además, si uso ADO.NET ExecuteReader, siempre puedo verificar el campo para las anotaciones y es nulo si la clave externa no está configurada. Así que estoy buscando una asignación de datos adecuada para esta tabla.

Respuesta aceptada

Encontré la solución. Acabo de cambiar el tipo ParentCategoryId a INT porque INTEGER tiene 64 bits, así que ahora no hay problema de conversión.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow