在LINQ-to-NHibernate中对孩子的孩子求和

时间:2012-12-21 20:34:54

标签: nhibernate linq-to-nhibernate

我正在使用NHibernate 3.2.0.4000及其附带的LINQ提供程序。我试图对孩子的孩子进行总结,但我一直在例外。我的目标是使用group by,然后对组中的元素求和。这是我得到的:

当我跑步时

nh.Query<Aye>()
    .Select(aye => aye.Bees.Sum(bee => bee.Cee.Dees.Sum(dee => dee.Value)))
    .ToList();

我得到了

Antlr.Runetime.Tree.RewriteEmptyStreamException : "rule x"

当我跑步时

nh.Query<Aye>()
    .Select(aye => aye.Bees.SelectMany(bee => bee.Cee.Dees).Sum(dee => dee.Value))
    .ToList();

我得到了

NotSupportedException : "Specified method is not supported."

最后,当我跑

nh.Query<Bee>()
    .GroupBy(bee => bee.SomeProperty)
    .Select(grp => new { TotalValue = grp.Sum(bee => bee.Cee.Dees.Sum(dee => dee.Value)))
    .ToList()

我得到了

InvalidPathException: "Invalid path: 'dee.vValue' [.Select[System.Linq.IGrouping`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[Fully.Qualified.Name.For.Bee, MyAssembly, ...

我有一个三层应用程序,我正在尝试将业务逻辑保留在数据库之外。显然,我可以创建一个视图并将视图映射到一个对象,但有几个过滤器我宁愿用C#实现其余的业务规则。我的映射尽我所知。

所以问题是:我如何组建一个大父母,然后总结一下这些孙子? 编辑:我如何以尽可能高效的方式这样做。可能涉及成千上万行,否则我会得到根对象,只需编写普通的C#代码。提前致谢!

0 个答案:

没有答案