0

所以,我有一个大图,它使用几种不同的任何关系链接在一起,我试图弄清楚如何急切地加载整个图。

我有一个有步骤的向导。Step 可以直接链接到另一个 Step,也可以链接到一些中间 Action,然后再链接到另一个 Step。步骤可以链接到层次结构中的任何其他步骤;我不想加载潜在递归步骤的子级。我用 IsLink 布尔值标记它们。有几种不同类型的步骤,所以任何东西都链接到一个步骤,这就是一个 Any 映射。大图会导致许多数据库命中以加载整个层次结构。

从我能想到的最简单的事情开始:

        _session.QueryOver<Wizard>()
                .Where(w => w.Id == wizardId)
                .Fetch(w => w.Step).Eager
                .List().First();

导致错误:“任何类型都没有唯一引用的持久性”

我不太确定从这里到哪里去加载整个事情。我宁愿使用 NHibernate 来完成它,而不是导致一些庞大的存储过程。层次结构有效;我可以递归地遍历并构建我想要的一切,但这不是很高效。

我该从哪里开始?

4

1 回答 1

0

您不能Any在一次往返中急切获取异构关联(即)。此外,如果您有递归/分层关系,这也无济于事。

有两种技术可以帮助您提高性能:批处理缓存

于 2013-06-05T12:34:52.780 回答