이 Dapper Query는 항상 null을 반환합니다.

asp.net-mvc-4 c# dapper mysql

문제

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using Dapper;
namespace Calculate.Models
{
    public class SelectedDetailsGetter
    {
        SqlConnection con = new SqlConnection("Data Source=CHANDAKG-01-L\\SQLEXPRESS;initial catalog=Calculator;integrated security=true");
        public IEnumerable<SelectedDetails> GetSelectedDetails(string Name)
        {

            string query = "SELECT * FROM DataNorm WHERE Provider=@name AND year(DateMonth)=2014";
                var result = con.Query<SelectedDetails>(query,new { name = Name });
                return result;
        }
    }
}

이 쿼리는 항상 null을 반환합니다. 뭔가 잘못 됐나요 ?? 그리고 누구나 SingleOrDefault() 의 사용법을 말할 수 SingleOrDefault()

수락 된 답변

우선, SingleOrDefault () 함수는 물론 고유 한 레지스터를 항상 반환합니다. 사람들은 쿼리 결과가 두 번 이상 행을 반환하지만이 경우에는 첫 번째 문제 만 사용할 때 사용합니다.

자, 문제의 해결

연결에 대한 작업에는 항상 "사용"을 사용하십시오. 열려있는 연결을 닫고 처리하는 것을 잊지 않도록하는 가장 좋은 방법입니다.

객체 연결을 인스턴스화 한 후에 항상 연결을 열어야합니다.

이 시도:

public IEnumerable<SelectedDetails> GetSelectedDetails(string Name)
            {
                using (var con = new SqlConnection("Data Source=CHANDAKG-01-L\\SQLEXPRESS;initial catalog=Calculator;integrated security=true"))
                {
                    con.Open();

                    string query = @"   SELECT * 
                                        FROM DataNorm 
                                        WHERE Provider= @name 
                                          AND year(DateMonth) = 2014 ";

                    var result = con.Query<SelectedDetails>(query, new { name = Name });

                    return result;
                }
            }

인기 답변

github에서 :

주 : 모든 확장 메소드는 연결이 이미 열려 있다고 가정하고, 연결이 닫히면 실패합니다.



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