我们正在使用NHibernate但有时使用NHibernateUtil.Initialize调用手动加载代理。我们还使用软删除,并在所有映射到表的地方都有“where”条件。 NHibernate生成的SQL成功添加了where条件(即DELETED为NULL)但是我们注意到NHibernateUtil.Initialize没有观察到映射文件的约束。
即。 NHibernateUtil.Initialize生成的SQL都没有观察到我们的DELETED IS NULL条件。
我们是否遗漏了一些内容,因为我们真的希望在情况需要时手动加载某些实体集合。
我们正在使用FluentNhibernate进行映射。
答案 0 :(得分:1)
找到了这个问题的答案。正如我原先想的那样,这不是NHibernateUtil.Initialize的问题。它与我们在FluentNHibernate中的HasMany映射有关,需要一个“Where”条件,就像我们对每个表一样。
添加“Where”条件后,对加载代理的任何调用都会导致正确的数据检索。