You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NHibernate ICriteria查询时选择常量值到字段的实现方案咨询

直接使用Projections.Constant本身即可实现常量字段查询,不需要借助条件投影绕路,这是最高效且符合NHibernate设计的实现方案,生成的SQL不会包含多余的判断逻辑,和你预期的格式完全一致。

你要实现SELECT ID, 'ConstantTile' Title FROM Table的效果,ICriteria 写法如下:

// 构造查询
ICriteria criteria = session.CreateCriteria<YourTableEntity>();
criteria.SetProjection(
    Projections.ProjectionList()
        .Add(Projections.Property("ID"))
        // 直接添加常量投影,指定别名即可
        .Add(Projections.Constant("ConstantTile", NHibernateUtil.String).As("Title"))
);

// 如需映射到DTO对象,可以搭配别名转换器使用
criteria.SetResultTransformer(Transformers.AliasToBean<YourResultDto>());
var resultList = criteria.List<YourResultDto>();

你原来的工具方法可以直接简化为:

public static IProjection GetStringConstantProjection(string desiredResult)
{
    return Projections.Constant(desiredResult, NHibernateUtil.String);
}

如果要返回其他类型的常量,只需要替换NHibernateUtil.String为对应类型即可,比如NHibernateUtil.Int32对应整数、NHibernateUtil.DateTime对应日期类型,生成的SQL会自动适配对应常量的语法。

内容的提问来源于stack exchange,提问作者KeldJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:36:07