/// <summary> /// This Prefetch call is a simpler API for when you are not interested in tweaking the Query /// </summary> /// <param name="maps">The Path to the data</param> public void Prefetch(params esPrefetchMap[] maps) { if (maps != null) { if (prefetchMaps == null) { prefetchMaps = new List <esPrefetchMap>(); } esPrefetchParameters data = new esPrefetchParameters(); // Create the query, we do so in reverse order for (int i = maps.Length - 1; i >= 0; i--) { esPrefetchDelegate prefetchDelegate = maps[i].PrefetchDelegate; prefetchDelegate(data); } // The path is the next to the last PropertyName string path = string.Empty; if (maps.Length > 1) { path = maps[maps.Length - 2].PropertyName; } esPrefetchMap rootMap = maps[maps.Length - 1]; rootMap.Query = data.Root; rootMap.Path = path; prefetchMaps.Add(rootMap); rootMap.Query.Select(rootMap.Query); } }
/// <summary> /// This Prefetch allows you to fill in the Select() statement for the query to control what columns are brought back /// </summary> /// <typeparam name="T">The Type of the esDynamicQuery returned</typeparam> /// <param name="provideSelect">If true then you must fill in the Query.Select() clause</param> /// <param name="maps">The Path to the data</param> /// <returns>The esDynamicQuery for the Type of query you intend to load</returns> public T Prefetch <T>(bool provideSelect, params esPrefetchMap[] maps) where T : esDynamicQuery { if (maps != null) { if (prefetchMaps == null) { prefetchMaps = new List <esPrefetchMap>(); } esPrefetchParameters data = new esPrefetchParameters(); // Create the query, we do so in reverse order for (int i = maps.Length - 1; i >= 0; i--) { esPrefetchDelegate prefetchDelegate = maps[i].PrefetchDelegate; prefetchDelegate(data); } // The path is the next to the last PropertyName string path = string.Empty; if (maps.Length > 1) { path = maps[maps.Length - 2].PropertyName; } esPrefetchMap rootMap = maps[maps.Length - 1]; rootMap.Query = data.Root; rootMap.Path = path; prefetchMaps.Add(rootMap); if (provideSelect) { rootMap.Query.Select(rootMap.Query); } return((T)data.Root); } return(null); }