Как получить имя таблицы столбца из SqlDataReader
У меня есть запрос SQL, который я получаю из файла конфигурации, этот запрос обычно содержит 3-6 объединений.
Мне нужно найти во время выполнения на основе набора результатов, представленного SqlDataReader, чтобы найти имя таблицы для каждого столбца.
Вот некоторые вещи, которые не работают:
SqlDataReader.GetName возвращает имя столбца, но не имя таблицы.SqlDataReader.GetSchemaTable возвращает таблицу данных с информацией о столбце, но все имена таблиц являются нулевыми.Запросы information_schema не помогают, потому что мне нужны данные о результатах текущего запроса (и имена столбцов не уникальны - в разных таблицах есть столбцы с одинаковыми именами).Я использую .net 3.5SP1 / C # / SQL Server 2008 в консольном приложении.
РЕДАКТИРОВАТЬ: Я знаю, что это возможно не во всех случаях, поскольку «столбец» может быть объединен из нескольких таблиц, функции или даже константного выражения - я ищу что-то, что работает в простом случае.
РЕДАКТИРОВАТЬ 2: Выяснили, почему это не сработало - вы можете использовать SqlDataReader.GetSchemaTable, чтобы получить информацию о таблице, но вам нужно установить CommandBehavior на KeyInfo, вы делаете это в вызове ExecuteReader:
reader = cmd.ExecuteReader(CommandBehavior.KeyInfo);