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 中的自动更新包

第二部分 Nhibernate中的类型

Nhibernate HQL 匿名类(严格说是map的使用以及构造函数的使用

nhibernate中的HasOne和References有啥区别?

nhibernate中的命名查询错误

NHibernate 中的 Lazy 是啥意思