是否有可能在NHibernate中做这样的事情?
Product GetSpecificProduct()
{
return session.CreateSQLQuery("SELECT * FROM Products WHERE price =
$500").UniqueResult<Product>();
}
当我尝试运行此代码时,我得到:
System.InvalidCastException:无法将类型为“System.Object []”的对象强制转换为“产品”。
或者我必须使用NHibernate查询语言吗?
答案 0 :(得分:8)
如果必须使用CreateSqlQuery,则可以使用以下命令:
Product GetSpecificProduct()
{
ISQLQuery query = session.CreateSQLQuery("SELECT * FROM Products WHERE price = $500");
Product p = query.SetResultTransformer(Transformers.AliasToBean<Product>()).UniqueResult<Product>();
}
我建议您更好地使用ICriteria,如下所示:
Product GetSpecificProduct()
{
ICriteria c = session.CreateCriteria();
c.Add(Expression.Eq("Price", 500));
return c.UniqueResult<Product>();
}
答案 1 :(得分:4)
是的,你可以。使用Native SQL检查实体查询:http://codewut.de/content/using-native-sql-nhibernate