/// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="entityLoader">Loader.</param>
 /// <param name="queryable">Consulta que será realizado.</param>
 /// <param name="sourceContext">Contexto de origem dos dados.</param>
 /// <param name="uiContext">Contexto de interface com o usuário.</param>
 /// <param name="entityTypeManager">Gerenciador dos tipos de entidas.</param>
 /// <returns></returns>
 public GetEntitiesEnumerable(EntityLoader <TEntity1, Model> entityLoader, Query.Queryable queryable, Colosoft.Query.ISourceContext sourceContext, string uiContext, IEntityTypeManager entityTypeManager)
 {
     _entityLoader      = entityLoader;
     _queryable         = queryable;
     _sourceContext     = sourceContext;
     _uiContext         = uiContext;
     _entityTypeManager = entityTypeManager;
 }
        /// <summary>
        /// Método usado para criar um item a partir dos dados do registro.
        /// </summary>
        /// <param name="record"></param>
        /// <returns></returns>
        protected override T CreateCollectionItem(IRecord record)
        {
            var bindStrategy     = EntityLoader.GetBindStrategy().CreateSession(record.Descriptor);
            var objectCretaor    = EntityLoader.GetObjectCreator();
            var recordKeyFactory = EntityLoader.GetRecordKeyFactory();
            var recordKey        = recordKeyFactory.Create(DataModelTypeName, record);

            return((T)EntityLoader.FullLoad(record, recordKey, bindStrategy, objectCretaor, SourceContext, UIContext, EntityTypeManager));
        }
 /// <summary>
 /// Recupera o enumerador das entidade com base no resultado preparado.
 /// </summary>
 /// <param name="result"></param>
 /// <returns></returns>
 private IEnumerator <IEntity> GetEnumerator(IEnumerable <Colosoft.Query.IRecord> result)
 {
     if (result == null)
     {
         yield break;
     }
     else
     {
         var recordKeyFactory = EntityLoader.GetRecordKeyFactory();
         var typeName         = Colosoft.Reflection.TypeName.Get(EntityLoader.DataModelType);
         foreach (var i in result)
         {
             var recordKey = recordKeyFactory.Create(typeName, i);
             yield return(EntityLoader.LazyLoad(i, recordKey, SourceContext, UiContext, EntityTypeManager, _entityLazyArgs));
         }
     }
 }
 /// <summary>
 /// Recupera o enumerador do resultad.
 /// </summary>
 /// <returns></returns>
 public override IEnumerator <IEntity> GetEnumerator()
 {
     if (PrepareResult == null)
     {
         var result     = new List <EntityLoaderCreatorArgs>();
         var exceptions = new Queue <Exception>();
         EntityLoader.CreateNestedQueries(Queryable, UiContext, EntityTypeManager, result, exceptions);
         var prepareResult = new PrepareNestedQueriesResult(Queryable, EntityLoader, UiContext, EntityTypeManager, result, exceptions);
         ExecuteQuery(prepareResult);
         return(GetEnumerator(prepareResult, SourceContext));
     }
     else
     {
         if (QueryResult != null)
         {
             ProcessQueryResult(PrepareResult, QueryResult);
         }
         else
         {
             ExecuteQuery(PrepareResult);
         }
         return(GetEnumerator(PrepareResult, SourceContext));
     }
 }
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="entityLoader">Loader.</param>
 /// <param name="queryable">Consulta que será realizado.</param>
 /// <param name="sourceContext">Contexto de origem dos dados.</param>
 /// <param name="uiContext">Contexto de interface com o usuário.</param>
 /// <param name="entityTypeManager">Gerenciador dos tipos de entidas.</param>
 /// <returns></returns>
 public GetFullEntitiesEnumerable(EntityLoader <TEntity1, Model> entityLoader, Query.Queryable queryable, Colosoft.Query.ISourceContext sourceContext, string uiContext, IEntityTypeManager entityTypeManager) : base(entityLoader, queryable, sourceContext, uiContext, entityTypeManager)
 {
 }
 /// <summary>
 /// Construtor usado para carregar as entidade com base no resultado preparado.
 /// </summary>
 /// <param name="entityLoader">Loader associado.</param>
 /// <param name="queryable"></param>
 /// <param name="sourceContext"></param>
 /// <param name="result"></param>
 /// <param name="uiContext"></param>
 /// <param name="entityTypeManager"></param>
 /// <param name="entityLazyArgs"></param>
 public GetLazyEntitiesEnumerable(EntityLoader <TEntity1, Model> entityLoader, Colosoft.Query.Queryable queryable, Colosoft.Query.ISourceContext sourceContext, IEnumerable <Colosoft.Query.IRecord> result, string uiContext, IEntityTypeManager entityTypeManager, EntityLoaderLazyArgs entityLazyArgs) : base(entityLoader, queryable, sourceContext, uiContext, entityTypeManager)
 {
     _entityLazyArgs = entityLazyArgs;
     _result         = result;
 }