下面的代码运行良好:
Query query = parser.Parse(expression);
IFullTextSession session = Search.CreateFullTextSession(this.Session);
IFullTextQuery fullTextQuery = session.CreateFullTextQuery(query, new[] { typeof(MappedSequence) });
var l1 = fullTextQuery.List();只要查询不返回太多的对象。如果查询包含的对象太多,则生成的sql代码太长,sql server将抛出异常。一种可行的解决方案是使用分页来获取所有对象,这是相当慢的。有没有更好的解决方案?
谢谢。
C
发布于 2011-04-02 05:11:05
如果我没记错的话,fullTextQuery.List()做了一个很大的
select ... where ID_COL IN ( id1, id2, id3, id4 ... )其中id1,id2 ..。是参数,在SQL Server中数量是有限制的。这样,您就可以从lucene文档中获得NHibernate实体。长话短说,除了分页之外,没有其他解决方法。
如果你真的需要获取这么多数据,你可以使用1000个元素的页面大小。
在某些地方获取1000个实体会很慢:例如,当你在屏幕上显示它们的时候。
https://stackoverflow.com/questions/5339696
复制相似问题