我正在为我们公司正在进行的项目提供NHibernate,我想知道NHibernate是否可以优化,以便在使用Criteria查询语言时只检索表上的特定列.
例如.假设我有一个包含30列的表,并使用NHibernate映射到一个对象,该对象是针对该表的1对1匹配.但是,对于系统的特定功能,我只关心其中的两个列.
现在,我知道我可以使用HQL并执行一个CreateQuery可以实现此目的,但这需要我为每个我想要有选择地检索的字段组合创建一个构造函数.从维护的角度来看,这可能是一个巨大的痛苦,因为我不会在运行时之前捕获缺少的构造函数.
我喜欢Criteria查询语言,因为它生成参数化SQL而不是来自HQL的直接SQL查询.我看到有一个"排除"模型不包括某些列,但在大多数情况下,我将包括更多列而不是排除.
感谢下面的评论,我调查了预测,这对我来说仍然不是一个理想的情况.使用以下内容时:
var list = session
.CreateCriteria(typeof (Task))
.SetProjection(Projections
.ProjectionList()
.Add(Projections.Property("Id")))
.List();
Run Code Online (Sandbox Code Playgroud)
我最后得到的变量list就是整数,我更喜欢拥有完整的Task对象,但所有字段都设置为默认值.这甚至可能吗?到目前为止,我看到的一切都说没有.
nhibernate ×1