我有一个非常简单的问题,但找不到一个简单的答案。单列结果NHibernate SQL查询映射
我有NHibernate的执行原始SQL查询,不幸被从数据库中加载(是的,我们存储SQL查询的数据库,没有最好的设计,但我承担)。这意味着基本上我不知道查询将返回多少列。 我知道的是,如果查询是单个列,那么它是我需要的,如果它是多个列,那么我需要第一个列,很简单。
在我的代码基本上有3种选择:
session.CreateSQLQuery(SQLString).List();
session.CreateSQLQuery(SQLString).List<object>();
session.CreateSQLQuery(SQLString).List<object[]>();
问题是列表()将返回一个List<int>
(或合适的类型,但INT应该是在我的情况),如果该查询返回单列,或者如果我有多个列,则为List<object[]>()
。在这种情况下,List<object>
除外不会返回List<int>
。 当然,试图总是强制转换为object [](第三选项)并获取第一个元素不起作用,因为nHibernate返回一个int并且不能转换为object []。
有没有办法强制NHibernate的始终,即使在一列的情况下返回一个对象[]?如果没有,是否有一种简单的方法来检查结果中的列数,并据此采取行动?
谢谢!
可能NHibernate的DTO将满足您的需要。列表除外
如果您不知道您的查询将返回什么内容,那么您如何知道如何处理结果,或者您是否通过结果的形式决定? – 2012-01-04 14:10:38
我知道我需要一个int(ID基本上)的列表。如果查询返回1列,这将是我所需要的,但如果它返回多个列,第一列将是我所需要的。然后我通过这个ID列表进行处理... 我不知道结果的类型,因为查询是由其他进程动态生成的(它基本上是一种动态过滤形式)。 – Tallmaris 2012-01-04 14:56:02