2017-01-12 3 views
7

мне нужно возвращать список из щеголеватых с новым кортежа в C# 7.Щеголеватых материализации к кортежу

public static List<(int StyleId, decimal StyleCode)> GetOnlyServices() 
{ 
    var query = [email protected]" SELECT 
        ST.style_id as StyleId, ST.style_code as StyleCode 
        ... 
        ..."; 

    using (SqlConnection db = new SqlConnection(InfobaseConString)) 
    { 
     var a = db.Query<(int StyleId, decimal StyleCode)>(query, commandTimeout: 90).ToList(); 
     return a; 
    } 
} 

Но эта функция возвращает только мне 56 строк с (0,0), Item1=0, Item2=0. Что мне не хватает?

+0

Какие результаты вы ожидали? –

+0

значения ... я получаю только 0,0 во всех 56 строках ... Я ожидаю значения ... Запрос верный. Если я изменю var a = db.Query (query, commandTimeout: 90); Я получаю правильные данные [2] = {{DapperRow, StyleId = '534', StyleCode = '10000005'}} –

+3

Так как это так, меня не удивит, если Dapper еще не поддерживает эту функцию. Возможно, вам удастся опубликовать сообщение о проблеме на [сайте проекта] (https://github.com/StackExchange/dapper-dot-net). –

ответ

8

Честно говоря, это просто не поддерживается, как работают кортежи. Deserializer Dapper отображает значения столбцов с параметрами конструктора или свойствами/полями по имени в типе объекта. (Source, если вы можете понять сгенерированный ИЛ).

ValueTuples, с другой стороны, все еще имеют названия свойств, соответствующие элементам в кортеже (и т. Д.), Но использует магию компилятора/ide, чтобы сделать их доступными другими именами. Таким образом, StyleId или StyleCode не будут действительными именами собственности, они просто псевдонимы для Item1 и Item2 соответственно.

Вам придется либо ждать, когда команда добавит явную поддержку ValueTuples или использует ожидаемые имена свойств в вашем запросе.

var query = [email protected]" SELECT 
       ST.style_id as Item1, ST.style_code as Item2 
       ... 
       ..."; 
+0

Получил! Благодарю. –

+0

Dapper позволяет вам определить отображение запроса. –

Смежные вопросы