NHibernate 中的标量值函数
Posted
技术标签:
【中文标题】NHibernate 中的标量值函数【英文标题】:Scalar-Valued Function in NHibernate 【发布时间】:2010-03-20 03:04:45 【问题描述】:我在 MS SQL 2005 中有以下标量函数:
CREATE FUNCTION [dbo].[Distance] ( @lat1 float, @long1 float,@lat2 float, @long2 float )
RETURNS float
AS
BEGIN
RETURN (3958*3.1415926*sqrt((@lat2-@lat1)*(@lat2-@lat1) + cos(@lat2/57.29578)*cos(@lat1/57.29578)*(@long2-@long1)*(@long2-@long1))/180);
END
我需要能够从我的 NHibernate 查询中调用此函数。我阅读了this article,但我陷入了一些我无法立即理解的细节中。
如果您在 NHibernate 中使用过标量函数,能否给我一个示例,说明您的 HBM 文件如何查找这样的函数?
【问题讨论】:
【参考方案1】:这在映射文件中不可配置,但在方言中。您需要创建自定义方言并注册您的功能。例子:
http://nhforge.org/blogs/nhibernate/archive/2009/03/13/registering-freetext-or-contains-functions-into-a-nhibernate-dialect.aspx http://www.gg3721.com/list/9/23031.html【讨论】:
以上是关于NHibernate 中的标量值函数的主要内容,如果未能解决你的问题,请参考以下文章
Nhibernate HQL 匿名类(严格说是map的使用以及构造函数的使用