[英]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.