所以,我有一个大图,它使用几种不同的任何关系链接在一起,我试图弄清楚如何急切地加载整个图。
我有一个有步骤的向导。Step 可以直接链接到另一个 Step,也可以链接到一些中间 Action,然后再链接到另一个 Step。步骤可以链接到层次结构中的任何其他步骤;我不想加载潜在递归步骤的子级。我用 IsLink 布尔值标记它们。有几种不同类型的步骤,所以任何东西都链接到一个步骤,这就是一个 Any 映射。大图会导致许多数据库命中以加载整个层次结构。
从我能想到的最简单的事情开始:
_session.QueryOver<Wizard>()
.Where(w => w.Id == wizardId)
.Fetch(w => w.Step).Eager
.List().First();
导致错误:“任何类型都没有唯一引用的持久性”
我不太确定从这里到哪里去加载整个事情。我宁愿使用 NHibernate 来完成它,而不是导致一些庞大的存储过程。层次结构有效;我可以递归地遍历并构建我想要的一切,但这不是很高效。
我该从哪里开始?