【问题标题】:custom sql functions with fluent nhibernate具有流畅的 nhibernate 的自定义 sql 函数
【发布时间】:2011-06-07 11:14:49
【问题描述】:

如何在 Fluent NHibernate 中使用我的一些 SQL 函数?

我有一些SQL函数,例如:

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

我想在我的一些条件查询中使用这个函数。我可以这样做吗?如何做?

【问题讨论】:

    标签: sql-server nhibernate fluent


    【解决方案1】:

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

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

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

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

    如何使用方言:

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

    如何调用函数:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2010-12-23
      相关资源
      最近更新 更多