Dapper 강력하게 형식화 된 쿼리는 기본 개체 값을 반환합니다.

asp.net-core-mvc c# dapper

문제

단지 Dapper를 사용하고 그것을 좋아하기 시작했습니다. 나는 그것에 문제가있어, 그것은 개체의 오른쪽 번호를 반환하지만 그들은 모두 자신의 속성에 대한 기본값을 가지고

using (var dbConnection = Connection)
        {
            await dbConnection.OpenAsync();

            const string sQuery2 = @"SELECT * FROM ChipTime WHERE MacAddress = @MacAddress AND ClientId = @ClientId ORDER BY CreateDate Desc";
            var chipTimes = dbConnection.Query<ChipTime>(sQuery2, new { ClientId = clientId, MacAddress = id }).ToList();
        }

chipTimes에는 ChipTime 객체 목록 만 있습니다.이 객체는 모두 데이터베이스의 값이 아닌 기본 속성 만 가지고 있습니다.

만약 내가한다면

using (var dbConnection = Connection)
        {
            await dbConnection.OpenAsync();

            const string sQuery2 =
                @"SELECT * FROM ChipTime WHERE MacAddress = @MacAddress AND ClientId = @ClientId ORDER BY CreateDate Desc";
            var chipTimes = dbConnection.Query(sQuery2, new {ClientId = clientId, MacAddress = id}).ToList();
        }

동역학은 모두 올바른 가치를 가지고 있습니다.

ChipTime 클래스는 정말 간단합니다.

    public class ChipTime
{
    public int TimeId { get; set; }
    public string TimingPoint { get; set; }
    public string MacAddress { get; set; }
    public string ChipCode { get; set; }
    public DateTime ChipDateTime { get; set; }
    public DateTime ReaderTime { get; set; }
    public int ReaderTimeDec { get; set; }
    public string UhfReaderNo { get; set; }
    public string Rssi { get; set; }
    public DateTime CreateDate{ get; set; }
    public int ReplStatus { get; set; }
    public int RaceId { get; set; }
    public int ClientId { get; set; }
    public int RecordNo { get; set; }
    public string AntennaNo { get; set; }
    public bool IsRaceNo { get; set; }

}

내가 도대체 ​​뭘 잘못하고있는 겁니까?

인기 답변

SELECT *를 수행하는 대신 쿼리에서 선택하려는 열의 이름을 지정하십시오.

const string sQuery2 = @"SELECT TimeId, TimingPoint, MacAddress, ChipCode, ... FROM ChipTime WHERE MacAddress = @MacAddress AND ClientId = @ClientId ORDER BY CreateDate Desc";

왜 SELECT *는 유해한 것으로 간주됩니까?

나는 이것을 시도했지만 같은 결과를 보았다.

ChipTime 테이블의 열이 ChipTime 클래스의 속성 이름과 정확히 일치하는지 확인하고 유형 인수 (dbConnection.Query <ChipTime> )를 지정합니다.

using (var dbConnection = Connection)
    {
        await dbConnection.OpenAsync();

        const string sQuery2 =
            @"SELECT TimeId, TimingPoint, MacAddress, ChipCode, ... FROM ChipTime WHERE MacAddress = @MacAddress AND ClientId = @ClientId ORDER BY CreateDate Desc";
        var chipTimes = dbConnection.Query<ChipTime>(sQuery2, new {ClientId = clientId, MacAddress = id}).ToList();
    }


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow