我在没有显式列的查询上使用Futures查询时遇到问题。有问题的查询如下:“SHOW META;” (请参阅http://sphinxsearch.com/docs/1.10/sphinxql-show-meta.html)此查询返回一个始终包含两列和多行的表。现在当我按如下方式执行查询时,一切正常:
var query = session.CreateSQLQuery("SHOW META");
var metaData = query.List(); // metadata is a list of object[] instances of length two
变量“metadata”现在将包含一个长度为2的object []实例列表,其中列表中的每个object []项包含第一列的值(Variable_name)和第二列的值(Variable )。
但是,当我尝试将此查询转换为Futures查询时,我会返回一个长度为0的object []实例列表:
var query = session.CreateSQLQuery("SHOW META");
var futureQuery = query.Future();
var metaData = futureQuery.ToList(); // metadata is a list of object[] instances of length zero
换句话说,我确实为结果中的每一行获得了一个对象[],但没有添加任何数据。我究竟做错了什么?或者这是NHibernate的限制吗?
答案 0 :(得分:1)
如果我理解正确,则Future查询只是批量查询的一种方式,不会跟踪会话中的对象关系。
因此,如果这是正确的,它会将您的未来查询和普通查询视为单独的查询,并且您将获得对象列表。
答案 1 :(得分:0)
问题在于NHibernate版本3.3.1,其中期货有时无法按预期工作。这个错误已经在NHibernate 3.3.3版本中得到修复。