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는 합법적입니까? 예, 이유를 알아보십시오.