1
我正在尝试使用3个查询和期货来提取完整的对象图,以批量处理3个调用。Nhibernate使用期货加入查询
这是我的对象图的减少版本。
public class Talent
{
public virtual int Id { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string Slug { get; set; }
public virtual IList<Credit> Credits { get; set; }
public virtual IList<Show> Creations { get; set; }
}
的人才查询能够研究出如何让创作者
然而学分不这样做,我可以看到正在生成另一个SQL查询来再次读取这些数据。 以下是查询。
//Selectes the root node
var talentQuery = session.QueryOver<Filmslave.Domain.Models.Talent>()
.Where(t => t.Slug == slug)
.Take(1)
.Future();
//Fills Talent.Creations
var creationsQuery = session.QueryOver<Filmslave.Domain.Models.Creator>()
.Fetch(c => c.Shows).Eager
.JoinQueryOver(c => c.Talent).Where(t => t.Slug == slug)
.Future();
//Fills Talent.Credits
var creditsQuery = session.QueryOver<Filmslave.Domain.Models.Credit>()
.Fetch(c => c.Role).Eager
.Fetch(c => c.Episode).Eager
.JoinQueryOver(c => c.Talent).Where(t => t.Slug == slug)
.Future();
talent = talentQuery.FirstOrDefault();
我该如何获得人才来获取学分?
谢谢,这固定它。你能解释一下这个t.Credits [0]。角色是如何工作的吗? – Cogslave
它的语法允许你告诉NHibernate对一个集合的子集的孩子进行读取(例如,其中t.Credits是一个集合,t.Credits [0] .Role是一种告诉NHibernate获取所有集合的方法属于t的所有信用要素的角色要素) –