3 つのクエリと先物を使用して 3 つの呼び出しをバッチ処理して、完全なオブジェクト グラフを取得しようとしています。
これは、私のオブジェクト グラフの縮小版です。
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; }
}
Talent クエリは、Creator を取得する方法を解決できます。
ただし、クレジットはそうではありません。このデータを再度取得するために別の 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();
タレントにクレジットをもらうにはどうすればよいですか?