/// <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; }