0

我有一系列映射到各自数据库对象的类。

在映射中,设置了获取模式,以便关联的查找与父记录一起加载。

我现在正在引用其中一些对象,因此我显然正在急切地加载附属记录。

如果可能的话,我不想使用延迟加载,因为我从服务层传递这些对象 - 不理想,但我希望我可以在查询级别处理这个问题。

举个例子:

var c = s.CreateCriteria(typeof(Transaction))
                        .Add(Restrictions.Eq("Id", myId))
                        .SetFetchMode("Remark", FetchMode.Join)
                        .SetFetchMode("Category", FetchMode.Join)
                        .SetFetchMode("Reason", FetchMode.Join);

var t = c.List<Transaction>().FirstOrDefault();

备注有许多与之关联的记录,当我运行此查询时,这些记录当前正在加载。

您可以修改 ICriteria 以防止引用实体加载它们的关联吗?

在这个例子中,我只想要 Transction 及其直接关联的 Remark、Category 和 Reason

谢谢

4

1 回答 1

0

在我的头顶上应该是

var c = s.CreateCriteria(typeof(Transaction))
                    .Add(Restrictions.Eq("Id", myId))
                    .CreateAlias("Remark", "remark"))
                    .SetFetchMode("remark.Collection", FetchMode.Lazy);
于 2013-08-28T18:21:40.297 回答