1 c# sql nhibernate hql
我是StackOverflow的新用户,我需要一个HQL字符串的帮助..
在SQL中我的查询是这样的..
SELECT DISTINCT DATEPART(yyyy, Moment) AS Year,
FROM PRODUCT_SOURCE
Run Code Online (Sandbox Code Playgroud)
如何将其转换为HQL?
我试过这个,但没有用..
query = "SELECT DISTINCT DATEPART(year, p.Moment) as Year, " +
"FROM Product_Source as p";
Run Code Online (Sandbox Code Playgroud)
我基于SQL2008方言,所以根据你的需要进行更改.
public class MsSql2008ExtendedDialect : MsSql2008Dialect
{
public MsSql2008ExtendedDialect()
{
RegisterFunction("DATEPART_YEAR",
new SQLFunctionTemplate(NHibernateUtil.DateTime, "datepart(year, ?1)"));
}
}
Run Code Online (Sandbox Code Playgroud)
要使用你会像这样使用你的HQL
query = "SELECT DISTINCT DATEPART_YEAR(p.Moment) as Year, " +
"FROM Product_Source as p";
Run Code Online (Sandbox Code Playgroud)
编辑 As Diego非常正确地指出MSSQL服务器中的大部分功能已经注册.有关完整列表,请参阅https://github.com/nhibernate/nhibernate-core/blob/master/src/NHibernate/Dialect/MsSql2000Dialect.cs
所以只需使用: -
query = "SELECT DISTINCT year(p.Moment) as Year, " +
"FROM Product_Source as p";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5686 次 |
| 最近记录: |