NHibernate QueryOver 对变量的限制

发布于 2024-11-08 23:37:48 字数 616 浏览 0 评论 0原文

我有一个小问题:我会在 QueryOver 中插入一个条件来检查变量值。像这样的东西:

 var qOver = QueryOver.Of<MyModel>(() => myMod)
                .JoinAlias(() => myMod.SubMod, () => subMod, JoinType.LeftOuterJoin)
                    .Where(Restrictions.Or(
                        Restrictions.On(() => myMod.ID).IsIn(MyIDList)
                        , Restrictions.On(MyIDList == null))

在 SQL 语法中,像

WHERE @Variable = '' OR MyTable.MyField = @Variable

这样,如果我的变量已填充,我将过滤我的字段。如果我的变量为空(或 null),我将选择每个记录而不过滤任何内容。

如何使用 QueryOver 和 Restrictions 达到此结果? 谢谢你!

I've a little problem: I would insert a condition into my QueryOver that checks also the variable value. Something like this:

 var qOver = QueryOver.Of<MyModel>(() => myMod)
                .JoinAlias(() => myMod.SubMod, () => subMod, JoinType.LeftOuterJoin)
                    .Where(Restrictions.Or(
                        Restrictions.On(() => myMod.ID).IsIn(MyIDList)
                        , Restrictions.On(MyIDList == null))

In SQL sintax something like

WHERE @Variable = '' OR MyTable.MyField = @Variable

So, if I my variable is filled I'll filter on my field. If my variable is empty (or null) I'll select every record without filter any content.

How can I reach this result using QueryOver and Restrinctions?
Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑,眼淚并存 2024-11-15 23:37:48

如果变量为 null 或未设置,请勿将其添加到查询中。

var qOver = QueryOver.Of<MyModel>(() => myMod)
    .JoinAlias(() => myMod.SubMod, () => subMod, JoinType.LeftOuterJoin);

if( MyIDList != null )
    qOver = qOver.Where(Restrictions.Or(Restrictions.On(() => myMod.ID).IsIn(MyIDList))

If the variable is null or not set, dont add it to your query.

var qOver = QueryOver.Of<MyModel>(() => myMod)
    .JoinAlias(() => myMod.SubMod, () => subMod, JoinType.LeftOuterJoin);

if( MyIDList != null )
    qOver = qOver.Where(Restrictions.Or(Restrictions.On(() => myMod.ID).IsIn(MyIDList))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文