Ejemplo n.º 1
0
        /// <summary>
        /// To use multi criteria to eagerly load multiple child collection, if the first detached criteria has child collection to query,
        /// then must use .SetResultTransformer(new DistinctRootEntityResultTransformer() for the first detached criteria
        /// </summary>
        /// <param name="multiCriteria">The multi criteria.</param>
        /// <param name="detachedCriteria">The detached criteria.</param>
        /// <param name="orders">The orders.</param>
        /// <param name="returnDistinctRoot">If set to <c>true</c> [return distinct root].</param>
        /// <returns>A <see cref="IMultiCriteria"/></returns>
        public static IMultiCriteria AddDetachedCriteria(
            this IMultiCriteria multiCriteria, DetachedCriteria detachedCriteria, IEnumerable <Order> orders = null, bool returnDistinctRoot = false)
        {
            if (orders != null && orders.Count() > 0)
            {
                detachedCriteria.AddOrders(orders);
            }

            if (returnDistinctRoot)
            {
                detachedCriteria = detachedCriteria.SetResultTransformer(new DistinctRootEntityResultTransformer());
            }

            multiCriteria.Add(detachedCriteria);
            return(multiCriteria);
        }