카테고리 없음

postgre에서.net dapper 를 써서 쿼리결과를 받아오는데 decimal 값이 null 로 넘어오는경우

keisoft 2024. 9. 12. 09:58

using Dapper;
using System;
using System.Data;
using Npgsql;  // PostgreSQL용 Npgsql 패키지 사용

// 모델 클래스 정의
public class MyData
{
    public int Id { get; set; }
    public decimal? Amount { get; set; }  // Nullable decimal로 정의하여 null 값 허용
}

// PostgreSQL과 연결하고 쿼리 실행
public class Program
{
    private const string ConnectionString = "Host=myserver;Username=mylogin;Password=mypass;Database=mydatabase";

    public static void Main()
    {
        using (IDbConnection db = new NpgsqlConnection(ConnectionString))
        {
            string sql = "SELECT Id, Amount FROM my_table";
            
            // Dapper Query 실행 및 결과 반환
            var results = db.Query<MyData>(sql, new Type[] { typeof(decimal) }, (obj) =>
            {
                var amount = obj[1] is string ? decimal.Parse((string)obj[1]) : (decimal?)obj[1];
                return new MyData
                {
                    Id = (int)obj[0],
                    Amount = amount
                };
            });

            // 결과 출력
            foreach (var result in results)
            {
                Console.WriteLine($"Id: {result.Id}, Amount: {result.Amount}");
            }
        }
    }
}