tox*_*xaq 4 nhibernate sql-server-2005 user-defined-functions
我是NHibernate的新手,到目前为止一切都进展顺利,但我遇到了一个问题,我不确定如何解决问题.基本上我需要通过用户定义函数的输出进行过滤.如果我是用SQL编写的,这就是我写的:
declare @Latitude decimal
declare @Longitude decimal
declare @radius int
set @Latitude = -118.4104684
set @Longitude = 34.1030032
select *
from store
where dbo.CalculateDistance([Latitude], [Longitude], @Latitude, @Longitude) < @radius
Run Code Online (Sandbox Code Playgroud)
我已经看到了我认为不合适的公式属性,命名查询和创建自己的方言扩展的例子(这看起来有点过分了).我原本以为有更直接的方式去做,但我似乎无法找到一个整洁的例子.
您可以在hibernate查询中使用SQL表达式.假设您已映射了一个Store类型,您可以编写以下查询:
var result = session
.CreateCriteria<Store>()
.Add(Expression.Sql(
"dbo.CalculateDistance({alias}.Latitude, {alias}.Longitude, ?, ?) < ?",
new object[] {
-118.4104684d,
34.1030032d,
100
},
new IType[] {
NHibernateUtil.Double,
NHibernateUtil.Double,
NHibernateUtil.Int32
}
))
.List<Store>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1451 次 |
| 最近记录: |