c# – 从表值函数nhibernate中选择
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 从表值函数nhibernate中选择,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2025字,纯文字阅读大概需要3分钟。
内容图文
![c# – 从表值函数nhibernate中选择](/upload/InfoBanner/zyjiaocheng/824/38394b6855d445fe86353815065549e4.jpg)
我需要一点帮助.
我正在尝试在select中使用表值函数,但是我得到了这个未映射的错误.
dbo.FnListEvnt is not mapped [from 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.这是用于注册标量函数.
但是,您可以创建命名查询并执行该查询.这包括几个步骤:
>创建命名查询XML文件.这必须以* .hbm.xml结尾.我发现保持命名查询,函数和XML文件的名称完全相同很有用,但这不是必需的.以下是XML文件的示例:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<sql-query name="FnListEvnt">
<return-scalar column="ID" type="integer"/>
<return-scalar column="DT_INIC" type="DateTime"/>
<return-scalar column="DT_TMNO" type="DateTime"/>
<return-scalar column="CD_EVNT" type="string" />
select
*
from
dbo.[FnListEvnt](:dt, :id, :code);
</sql-query>
</hibernate-mapping>
如果查询返回映射类(未映射的类将不起作用),则可以使用return-class而不是return-scalar元素列表.
>创建结果类(除非您返回映射的类).请注意,您的类的属性名称必须与结果集的列名称匹配:
public class Result
{
public int ID { get; set; }
public DateTime DT_TMNO { get; set; }
public DateTime DT_INIC { get; set; }
public string CD_EVNT { get; set; }
}
>使用GetNamedQuery创建查询,然后设置参数并执行查询:
var results = session.GetNamedQuery("FnListEvnt")
.SetDateTime("dt", DateTime.Now)
.SetInt32("id", 4)
.SetString("code", "code")
.SetResultTransformer(Transformers.AliasToBean<Result>())
.List<Result>();
真的是这样的.您现在应该能够将您的TVF与NHibernate一起使用.
内容总结
以上是互联网集市为您收集整理的c# – 从表值函数nhibernate中选择全部内容,希望文章能够帮你解决c# – 从表值函数nhibernate中选择所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。