繁体   English   中英

自定义 sql 功能流畅 nhibernate

[英]custom sql functions with fluent nhibernate

如何将我的 SQL function 与 Fluent NHibernate 一起使用?

我有一些SQL function,例如:

CREATE FUNCTION [dbo].[TestFunction] 
(
    @value1 int,
    @vlaue2 int 
)
RETURNS int
AS
BEGIN
    RETURN @value1 + @value2
END

我想在我的一些标准查询中使用这个 function。 我可以这样做吗?怎么做?

有几种方法可以做到这一点,我发现最简单的方法是提供自定义 SQL 方言,注册我的 function 然后使用Session.CreateSQLQuery执行它

这是一个示例自定义方言:

public class CustomMsSql2012Dialect : MsSql2012Dialect
{
    public CustomMsSql2012Dialect ()
    {          
        RegisterFunction("dbo.testfunction", new SQLFunctionTemplate(NHibernateUtil.Int32, "dbo.TestFunction(?1, ?2)"));
    }
}

请注意,传递给RegisterFunction的第一个字符串中的 function 名称都是小写的,在我的研究中,我遇到有人说这是必需的,但不幸的是我现在找不到要引用的文章。

如何使用方言:

MsSqlConfiguration.MsSql2012.ConnectionString("connectionStringHere")
    .Dialect<EkaMsSql2012Dialect>();

如何调用 function:

Session.CreateSQLQuery("SELECT dbo.TestFunction( :value1, :value2 )")
     .SetString("value1", 5)
     .SetString("value2", 6)
     .UniqueResult<int>();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM