Получение отдельной колонки из объекта
Как вы можете получить один столбец из запроса вместо целого объекта?
Я мог бы сделать что-то подобное, чтобы получить весь объект, но все, что я хочу, это имена:
IList<Tribble> tribbles = session.CreateCriteria(typeof(Tribble)).List<Tribble>();
IList<string> names = new List<string>();
foreach (Tribble t in tribbles) {
names.Add(t.Name);
}
Я хотел бы указать дополнительные критерии, так можно ли просто исключить некоторые столбцы из списка?
Ответы
Ответ 1
Вот решение, которое я в конечном итоге закончил, используя:
ICriteria c = session.CreateCriteria(typeof(Tribble));
c.SetProjection(Projections.ProjectionList().Add(Projections.Property("Name")));
IList<string> names = c.List<string>();
Я получил эту идею из fooobar.com/questions/266399/....
Ответ 2
Почти пять лет спустя..., это то, что вы могли бы сделать, используя NHibernate.Linq:
IList<string> names = session.Query<Tribble>().Select(t => t.Name).ToList()
Ответ 3
Как насчет выполнения запроса по строкам?
IList<string> names = session.CreateQuery("select name from Tribbles").List<string>();
Ответ 4
Вы можете сделать что-то вроде этого:
IQuery query = dao.GetQuery(@"SELECT u.Id
FROM UserImpl u
WHERE u.UserName = :username");
query.SetParameter("username", username);
return (long)query.UniqueResult();
Ответ 5
Обычно нет. Редко имеет смысл иметь частично заполненный бизнес-объект.
Зачем вам это нужно?