我可以在运行时使用c#在Nhibernate中进行延迟加载

时间:2012-01-26 15:34:13

标签: nhibernate

我是Nhibernete的新手。

如果我在Nhibernete中使用XML文档(.hbm.xml文件),我在该xml中启用/禁用延迟加载。

在Nhibernete有什么方法可以在运行时设置延迟加载吗?

1 个答案:

答案 0 :(得分:2)

我建议你不要在你的hbm文件中定义延迟加载/预先加载。

您可以使用QueryOver

控制所有内容

延迟加载:

var order = Session.QueryOver<Domain.Order>()
    .Where(x => x.id == 12)
    .SingleOrDefault();

渴望加载:

Domain.OrderLine orderLine = null;

var order = Session.QueryOver<Domain.Order>()
    .Where(x => x.id == 12)
    .Fetch(x => x.OrderLines).Eager
        .JoinAlias(x => x.OrderLines, () => orderLine, JoinType.LeftOuterJoin)
    .SingleOrDefault();

var order = Session.QueryOver<Domain.Order>()
    .Where(x => x.id == 12)
        .Inner.JoinAlias(x => x.OrderLines, () => orderLine)
        .SingleOrDefault();

我建议你阅读这篇有趣的article