nhibernate - 在 NHibernate 3 中使用 Linq 时急切加载

标签 nhibernate linq-to-nhibernate nhibernate-3

我需要帮助在 NHibernate 3 主干版本中使用 Linq 进行热切加载。

我有这样的多对多关系:

public class Post
{
    public int Id {get;set;}
    public IList<Tag> Tags { get;set;} 
    .
    .
    .
}

现在我在 Fluent NHibernate 中有以下映射
public class PostMap:ClassMap<Post>
{
    public PostMap()
    {
        Table("Posts");
        Id(x => x.Id);
        .
        .
        HasManyToMany(x => x.Tags)
            .Table("PostsTags")
            .ParentKeyColumn("PostId")
            .ChildKeyColumn("TagId")
            .Not.LazyLoad(); // this is not working.. 
    }
}

现在,在获取帖子时,我还需要标签来急切加载。我知道 Criteria API 和 HQL 是可能的,而 SetFetchMode 是我应该使用的。但是在使用 Linq 时有没有办法使用 SetFetchMode?

最佳答案

前段时间对此的支持进入了主干;语法是这样的

var query = session.Query<Post>().Where(bla bla).Fetch(p => p.Tags);

如果标签又具有其他关系,您可以执行以下操作:
var query = session.Query<Post>().Where(bla bla).Fetch(p => p.Tags).ThenFetch(t => t.SomethingElse);

关于nhibernate - 在 NHibernate 3 中使用 Linq 时急切加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2075048/

相关文章:

c# - 通过针对接口(interface)编程来保留数据

nhibernate - Autofac - 没有找到带有 'Public binding flags' 的构造函数

NHibernate 投影、AutoMapping、IPagedList,怎么做?

mysql - 具有相同标识符值的不同对象已与实体的 session : XXX, 关联

c# - 无效的 Actor (检查您的映射属性类型不匹配)

SQL Server Read Uncommitted 阻塞事务

queryover - NHibernate 3 - 如何对 id/numeric/int 执行 LIKE

linq - Nhibernate 和 linq 问题

c# - LINQ to NHibernate 和 let 关键字

nhibernate - LINQ 到 NHibernate : could not resolve property