我的一个 nhibernate 映射文件中有一个命名的本机 sql 查询,如下所示:
<sql-query name="GetAllClients">
<return alias="clientList" class="IBeam.Core.Models.Client"/>
<![CDATA[
SELECT a.sname Name, a.scd Id
FROM :MASTER_USER.smast a,
:MASTER_USER.fa_ledmast b,
:TRAN_USER.fa_subledmast c
WHERE a.scd = c.subledcd
AND b.ledgercd = c.ledgercd
AND b.ledtypecd = 'SDR'
AND a.catflg = 'N'
group by a.scd, a.sname
order by a.sname
]]>
</sql-query>
我从我的 c# 代码运行这个查询,如下所示:
var query = Repository.GetExecutingSession().GetNamedQuery("GetAllClients").SetString("MASTER_USER", "test$master").SetString("TRAN_USER", "test$tran");
var clients = query.List<Models.Client>();
但我收到错误:参数 MASTER_USER 在查询中不作为命名参数存在。我以前使用过命名查询并将参数传递给它,但从来没有作为模式名称。我认为它是将整体:MASTER_USER.smast
视为表名,而不是区分参数名。如何将架构名称作为参数传递给此查询?
我找到了这个链接,所以我认为它可以完成。但我不知道该怎么做。