c# – 在NHibernate映射层中使用复杂的where子句
我之前在映射层中使用了where子句,以防止某些记录以最低级别进入我的应用程序. (主要是为了防止必须重写大量代码行来过滤掉不需要的记录)
这些都是简单的,一列查询,就像这样 this.Where(“Invisible = 0”); 但是出现了一个需要使用存在的SQL查询的场景. 存在(从[仓库]中选择ep_.Id.[dbo] .EventPart ep_其中Id = ep_.EventId和ep_.DataType = 4 在上面的例子中,我通常会引用一个短名称的父表Event,即event_.Id,但是当Nhibernate动态生成这些短名称时,不可能知道它会是什么. 所以我尝试使用Id,从上面的ep_,其中Id = ep_.EventId 当代码运行时,由于动态短名称,EventPart表短名称ep_具有前缀的另一个短名称event0_.ep_,其中event0_指向父表. 这会导致SQL错误.在event0_和ep_之间 所以在我的EventMap中,我有以下内容 this.Where(“(存在(从[isnapshot.Warehouse]选择ep_.Id.[dbo] .EventPart ep_,其中Id = ep_.EventId和ep_.DataType = 4)”); 但是当它生成时会创建它 select cast(count(*)as INT)为col_0_0_ 它已将event0_正确添加到Id 是否构建了映射层where子句来处理这个问题,如果是的话,我哪里出错? 解决方法
尝试在别名周围放置方括号,如下所示:
exists (select ep_.Id from [Warehouse].[dbo].EventPart [ep_] where Id = ep_.EventId and ep_.DataType = 4 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |