如何使用休眠条件运行函数?
Posted
技术标签:
【中文标题】如何使用休眠条件运行函数?【英文标题】:How to run a function using a nhibernate criteria? 【发布时间】:2012-07-04 14:18:02 【问题描述】:我们有一个搜索例程,它使用条件来构建 SQL 查询(因为它的限制是动态添加的)。 在特定情况下(非常复杂的情况),我们需要搜索表值函数。(我们的模型对象映射到函数)。
结果会是这样的:
SELECT count(*) FROM dbo.GetSubStaffsLetterInstances(@staffId) WHERE LetterNumber="1234";
问题是我不知道如何将@staffId 传递给我的条件(我尝试添加 Eq 限制但没有成功,因为限制正在作用于属性) 我知道我可以向 IQuery 添加参数,但我不知道如何使用 ICriteria 对象来实现。
【问题讨论】:
Projection.SqlFunction(...)
但我认为 from 子句不支持它
【参考方案1】:
如果我完全理解您的问题,您可以求助于标准 SQL:-
var sql = "SELECT count(*) FROM dbo.GetSubStaffsLetterInstances(:staffId)
WHERE LetterNumber=:letterNum";
var count = session.CreateSqlQuery(sql)
.setInt32("staffId", 12345)
.setString("letternum", "A1")
.UniqueResult<int>();
或尝试.UniqueResult<long>();
,因为我不记得返回哪一个 HQL
【讨论】:
SELECT count(*) FROM dbo.GetSubStaffsLetterInstances(:staffId) WHERE LetterNumber=:letterNum 是标准的产生,是动态产生的。它可以根据用户想要搜索的内容而不同。 只有 HQL 允许您使用表值函数。你读过这个***.com/questions/4249885/…以上是关于如何使用休眠条件运行函数?的主要内容,如果未能解决你的问题,请参考以下文章