0

我需要传递 POCO 域对象(急切加载)。在分析了实体框架和 NHibernate 之后,我找不到解决方案!

通过 NHibernate 分析底层 SQL 和查询,我发现

ISession.CreateQuery (string HQL).SetMaxResults(N)

不在TOP NSQL 中实现,但总是将所有数据下载到 .NET,然后才获取子集(太愚蠢了)

那么如何将复杂的查询发送到大表呢?

ICreteriaSetMaxResults在 SQL 中实现)和IQueryOverTake()在 SQL 中的 impl)是不灵活的,例如,只有使用左连接才能进行急切加载。还有自定义子查询、顶部、过滤或排序依据等。显然 SQL 的灵活性要高得多。

实体框架是流畅的,似乎可以让魔法发生,但是 SOO-O DAMN SLOW!

经过一周的工作,我能想到的最好的灵活急切加载是TOP N由预加载的 HQLIListSetParameterList.

有没有更好的解决方案?

4

1 回答 1

0

我可能会走得很远(我现在无法检查答案)但你不能在查询本身中传递“top X”。就像是:

ISession.CreateQuery("select top" + n + " ...");
于 2013-06-16T07:45:39.643 回答