是否有可能在NHibernate中做这样的事情?
Product GetSpecificProduct()
{
return session.CreateSQLQuery("SELECT * FROM Products WHERE price =
$500").UniqueResult<Product>();
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行此代码时,我得到:
System.InvalidCastException:无法将类型为"System.Object []"的对象强制转换为类型Product.
或者我必须使用NHibernate查询语言?
如果必须使用CreateSqlQuery,则可以使用以下命令:
Product GetSpecificProduct()
{
ISQLQuery query = session.CreateSQLQuery("SELECT * FROM Products WHERE price = $500");
Product p = query.SetResultTransformer(Transformers.AliasToBean<Product>()).UniqueResult<Product>();
}
Run Code Online (Sandbox Code Playgroud)
我建议你最好使用ICriteria,如:
Product GetSpecificProduct()
{
ICriteria c = session.CreateCriteria();
c.Add(Expression.Eq("Price", 500));
return c.UniqueResult<Product>();
}
Run Code Online (Sandbox Code Playgroud)