У меня очень простой вопрос, но я не могу найти простой ответ.
У меня есть NHibernate, выполняющий необработанный SQL-запрос, который, к сожалению, загружается из БД (да, мы храним SQL-запрос в БД, а нелучший дизайн, но терпите меня).Это означает, что в принципе я понятия не имею, сколько столбцов запрос вернет.Что я знаю, так это то, что если запрос представляет собой один столбец, то это то, что мне нужно, а если это более одного столбца, тогда мне нужен первый, достаточно простой.:
session.CreateSQLQuery(SQLString).List();
session.CreateSQLQuery(SQLString).List<object>();
session.CreateSQLQuery(SQLString).List<object[]>();
Проблема в том, что List () вернет либо List<int>
(или соответствующий тип, но в моем случае должен быть int), если запрос возвращает один столбец, либо List<object[]>()
если у меня есть несколько столбцов.То же самое касается List<object>
, за исключением того, что в этом случае он не вернет List<int>
.Конечно, попытка всегда привести к объекту [] (3-й вариант) и получить первый элемент не работает, так как nHibernate возвращает int, и это не может быть приведено к объекту [].
Есть ли способ заставитьnHibernate всегда возвращать объект [] даже в случае одного столбца?Если нет, то есть ли простой способ проверить количество столбцов в результате и действовать соответственно?
Спасибо!