NHibernate: Как получить данные из IQuery.List (), используя имя поля? - PullRequest
0 голосов
/ 08 декабря 2010

Мой запрос будет выглядеть примерно так:

string query = " select a.CustomerName , b.ProductName from Customer as a join a.Product as b " 

IQuery query = applicationSession.CreateQuery(query);
IList listResult = query.List();

При этом будут возвращены имена клиентов и названия продуктов. Но то, что я хочу сделать, это что-то вроде:

string customerName = listResult[0]["CustomerName"];
string productName = listResult[0]["ProductName"];

Может ли кто-нибудь помочь мне с этим?

1 Ответ

4 голосов
/ 08 декабря 2010

Вы можете применить трансформатор к Hashtable:

string query = "select a.CustomerName as CustomerName, b.ProductName as ProductName from Customer as a join a.Product as b" 

IQuery query = applicationSession.CreateQuery(query);
var listResult = query.SetResultTransformer(NHibernate.Transform.Transformers.AliasToEntityMap).List<Hashtable>();


string customerName = (string)listResult[0]["CustomerName"];
string productName  = (string)listResult[0]["ProductName"];

Обратите внимание, что я добавил псевдонимы в ваш исходный запрос, чтобы заставить работать AliasToEntityMap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...