NHibernate: получить объект с помощью SQL-запроса - PullRequest
8 голосов
/ 27 ноября 2010

Возможно ли сделать что-то подобное в NHibernate?

Product GetSpecificProduct()
{
    return session.CreateSQLQuery("SELECT * FROM Products WHERE price =
        $500").UniqueResult<Product>();
}

Когда я пытаюсь запустить этот код, я получаю:

System.InvalidCastException: Невозможно привести объекттипа 'System.Object []' для ввода Product.

Или мне нужно использовать язык запросов NHibernate?

Ответы [ 2 ]

8 голосов
/ 27 ноября 2010

Если вам нужно использовать CreateSqlQuery, вы можете использовать следующее:

Product GetSpecificProduct()
{
   ISQLQuery query = session.CreateSQLQuery("SELECT * FROM Products WHERE price = $500");
   Product p = query.SetResultTransformer(Transformers.AliasToBean<Product>()).UniqueResult<Product>();
}

Я предлагаю вам лучше использовать ICriteria, как в:

4 голосов
/ 27 ноября 2010

Да, вы можете.Проверьте Entity Queries, используя собственный SQL: http://codewut.de/content/using-native-sql-nhibernate

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