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的所有信用要素的角色要素) –