加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql-server-2005 – 用户定义的函数输出进行Nhibernate过滤

发布时间:2021-04-03 13:12:02 所属栏目:编程 来源:网络整理
导读:我是NHibernate的新手,到目前为止一切都进展顺利,但我遇到了一个问题,我不确定如何解决问题.基本上我需要通过用户定义函数的输出进行过滤.如果我在SQL中写这是我写的: declare @Latitude decimaldeclare @Longitude decimaldeclare @radius intset @Latitude

我是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

我已经看到了我认为不合适的公式属性,命名查询和创建自己的方言扩展的例子(这似乎有点过分了).我会认为有更直接的方式,但我似乎无法找到一个整洁的例子.

解决方法

您可以在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>();

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读