尝试实现IQueryable
I got form时,我遇到了非常奇怪的异常NHibernate.Linq
。type 的例外Antlr.Runtime.Tree.RewriteEmptyStreamException
只是 states plan b
,仅此而已。可以在http://pastebin.com/kR2dvDHd找到详细的异常
这是引发异常的代码:
var matterExtractor = new MatterExtractor();
var InactiveMatters = matterExtractor.GetMattersAtStatus(General.InactiveMatterStatus);
Assert.IsNotNull(InactiveMatters); //OK
Assert.IsInstanceOfType(InactiveMatters, typeof (IQueryable<Matter>)); // OK
var MaterializedMatters = InactiveMatters.ToList(); //Exception is thrown
物质提取器类很简单,如下所示:
public class MatterExtractor
{
public virtual IQueryable<Matter> GetMattersAtStatus(MatterStatus status)
{
return
(new NHibernateRepository.Repository<Matter>()).Where(
m => m.MatterStatusHistories.OrderByDescending(msh => msh.CreateTime).FirstOrDefault().MatterStatus == status);
}
}
NHibernateRepository.Repository<T>
是一个实用程序类,它通过NHibernate.LINQ
扩展方法实现 IQueryable 到NHibernate.Session
. 这里没有什么特别的,但以防万一,这里是清单: http: //pastebin.com/MgDxDg3Y
我认为它与 NHibernate 映射无关,因为与Matter
实体交互的其他测试运行得很好。很可能它与该Where
子句有关,但我不明白该子句出了什么问题。我试过更换
OrderByDescending(msh => msh.CreateTime).FirstOrDefault()
至
OrderBy(msh => msh.CreateTime).LastOrDefault()
但它只是告诉我The LastResultOperator result operator is not current supported
,所以我认为NHibernate.Linq
不能留下来LastOrDefault
。
任何想法是什么plan b
意思,我该如何解决?