我需要帮助在 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/