Dapper.NET을 사용하여 C #의 변수에 sql 결과를 저장하는 방법

c# dapper sqlconnection

문제

내가 사용하고 내 프로젝트의 저장을위한 아름다운 도구에서 SQL query A와 결과 List 이 좋은 일.

나는 데이터베이스에서 레코드를 가져오고 결과를 변수에 저장하기 위해 SQL query 를 작성했지만, dapper를 사용하여 시도했지만 오류가 발생했습니다. 해당 코드를 붙여 넣었습니다.

예외 : 'System.Collections.Generic.List`1 [Dapper.SqlMapper + DapperRow] 형식의 개체를 캐스팅하여'System.IConvertible '을 입력 할 수 없습니다.

try
{
  using(var connection = ...)
  {
   connection.Open();
   const string masterSelectQuery = "SELECT Id as [fileId], FileName as [fileName], Frequency as [frequency], Scheduled_Time as scheduledTime FROM MASTER_TABLE";
   masterTableList = connection.Query<MasterTableAttributes>(masterSelectQuery).ToList();//Working fine

   const string lastProcessedTimeQuery = "SELECT TOP 1 file_transfered_time as [lastProcessedTime] FROM PROCESS_LOGS ORDER BY file_transfered_time DESC";
   DateTime lastProcessedTime = Convert.ToDateTime(connection.Query(lastProcessedTimeQuery)); //Here it fails
  }    
}

이 오류를 극복하기 위해 SQLCommand 를 다음과 같이 사용했습니다.

using (command = new SqlCommand(lastProcessedTimeQuery, connection))
{
  DateTime lastProcessedTime = (DateTime)command.ExecuteScalar();//working fine  
}

나는 더러운 것을 사용하는 실수를 저지르고있다.

미리 감사드립니다.

수락 된 답변

connection.Query(lastProcessedTimeQuery) 는 각각 개별적으로 dynamic 일련행을 반환합니다. file_transfered_timedatetime 이라고 가정하면 file_transfered_time 두 가지 옵션을 사용할 수 있습니다.

DateTime lastProcessedTime = connection.Query<DateTime>(
                 lastProcessedTimeQuery).Single();

또는 generic이 아닌 Querydynamic 행과 함께 작동하는 방식을 표시하려면 다음을 수행하십시오.

DateTime lastProcessedTime = connection.Query(
                 lastProcessedTimeQuery).Single().lastProcessedTime;

PROCESS_LOGS 테이블이 비어있을 수 있으면 SingleOrDefault 선호 할 수 있습니다.

DateTime? lastProcessedTime = connection.Query<DateTime?>(
                 lastProcessedTimeQuery).SingleOrDefault();

또는:

var row = connection.Query(lastProcessedTimeQuery).SingleOrDefault();
DateTime? lastProcessedTime = null;
if(row != null) lastProcessedTime = row.lastProcessedTime;


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.