【发布时间】:2015-08-29 00:06:46
【问题描述】:
我需要一点帮助。 我正在尝试在选择中使用表值函数,但我得到了这个没有映射的错误。
dbo.FnListEvnt 未映射 [来自 dbo.FnListEvnt(:dt, :id, :code)]
功能
CREATE FUNCTION [dbo].[FnListEvnt]
(@DT DATETIME, @ID INT, @CODE VARCHAR (4))
RETURNS
@RESULTADO TABLE (
ID INT ,
DT_INIC DATETIME ,
DT_TMNO DATETIME ,
CD_EVNT VARCHAR (5) )
AS
BEGIN
自定义方言(在 .config 中定义)
public class CustomFunctionsMsSql2008Dialect : MsSql2008Dialect
{
public CustomFunctionsMsSql2008Dialect()
{
RegisterFunction("dbo.FnListEvnt", new StandardSQLFunction("dbo.FnListEvnt", null));
}
}
查询
var query = Session.CreateQuery("from dbo.FnListEvnt(:dt, :id, :code) ")
.SetDateTime("dt", dt)
.SetInt32("id", id)
.SetString("code", code);
【问题讨论】:
-
我很确定
RegisterFunction只对 scalar 值的函数有用。您可能必须使用命名查询——这可以接受吗?
标签: c# sql-server nhibernate hql user-defined-functions