Я просматривал исходный код, но для такого небольшого ORM существует справедливое количество. Есть ли способ получить структуру поля запроса, возвращаемого Dapper после вызова .Query()? По сути, мне нужны те же данные, которые возвращаются DataReader, когда вы вызываете GetSchemaTable().Могу ли я получить структуру поля из запроса Dapper?
0
A
ответ
1
Это может быть сделано следующим образом:
Fetch читателя, используя один из следующих вызовов:
IDataReader dr = _connection.ExecuteReader(sql)
или
IDataReader dr = _connection.GetStream(sql)
Теперь вы можете позвонить dr.GetSchemaTable()
, чтобы получить соответствующую схему DataTable
На самом деле вы можете прибегнуть к аналогичному типу DbDataReader
типа SqlDataReader or OracleDataReader
в случае, если вы хотите использовать перегрузку GetSchemaTable()
Итак, как вы ее материализуете в IEnumerable или определенный тип? –
Не уверен, что у вас есть специальное требование для создания IEnumerable через DataReader, так как это можно получить напрямую, используя вызов Dapper Query . Для преобразования из DataReader вам необходимо использовать Reflection, проверьте следующую ссылку: http://www.codeproject.com/Articles/827984/Generically-Populate-List-of-Objects-from-SqlDataR Точка остается, Создайте сущность, применить атрибут для сопоставления с именами столбцов, извлеченными из базы данных, а затем заполнить каждое свойство объекта каждым вызовом DataReader.Read() –
Но это как-то вроде использования Dapper - я хочу, чтобы он выполнял сопоставление. Я просто нуждаюсь в дополнительной потребности в метаданных результатов. Я хочу выполнить вызов .Query() или .Query <>, но затем получить метаданные об этом результате. Да, я могу сделать все это вручную, но я бы предпочел, если это вообще возможно (отсюда и вопрос). –