Я пытаюсь написать веб-страницу в .NET, используя C # и NHibernate 2.1.
Соответствующий код выглядит так:
var whatevervar = session.CreateSQLQuery("select thread_topic, post_time, user_display_name, user_signature, user_avatar, post_topic, post_body from THREAD, [USER], POST, THREADPOST where THREADPOST.thread_id=" + id + " and THREADPOST.thread_id=THREAD.thread_id and [USER].user_id=POST.user_id and POST.post_id=THREADPOST.post_id ORDER BY post_time;").List();
(Я пытался использовать соединения в HQL, но затем обратился к этому запросу из-за нечитаемости HQL.) Проблема в том, что я получаю результат, несовместимый с повторителем. Когда я пытаюсь это:
posts.DataSource = whatevervar.;
posts.DataBind();
... я понял:
DataBinding: 'System.Object[]' does not contain a property with the name 'user_avatar'.
В более раннем проекте я использовал LINQ to SQL для этой же цели, и это выглядело так:
var whatevervar = from threads in context.THREADs
join threadposts in context.THREADPOSTs
on threads.thread_id equals threadposts.thread_id
join posts1 in context.POSTs
on threadposts.post_id equals posts1.post_id
join users in context.USERs
on posts1.user_id equals users.user_id
orderby posts1.post_time
where threads.thread_id == int.Parse(id)
select new
{
threads.thread_topic,
posts1.post_time,
users.user_display_name,
users.user_signature,
users.user_avatar,
posts1.post_body,
posts1.post_topic
};
Это сработало, и теперь я хочу сделать то же самое с NHibernate. К сожалению, я не знаю, как заставить повторитель распознавать поля результата запроса.
Заранее спасибо!