/// <summary> /// Processa os resultado da consulta. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="queryable"></param> /// <param name="uiContext"></param> /// <param name="args"></param> /// <param name="bindStrategy"></param> /// <param name="objectCreator"></param> /// <returns></returns> private static IEnumerable <T> ExecuteSelectProcessLazyResult <T>(this Query.Queryable queryable, string uiContext = null, Business.EntityLoaderLazyArgs args = null, Colosoft.Query.IQueryResultBindStrategy bindStrategy = null, Colosoft.Query.IQueryResultObjectCreator objectCreator = null) { var method = typeof(Business.IEntityManager).GetMethod("ProcessLazyResult", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public, null, System.Reflection.CallingConventions.Any, new[] { typeof(Query.Queryable), typeof(Query.ISourceContext), typeof(string), typeof(Business.EntityLoaderLazyArgs) }, null); method = method.MakeGenericMethod(typeof(T)); try { return((IEnumerable <T>)method.Invoke(Colosoft.Business.EntityManager.Instance, new object[] { queryable, queryable.SourceContext, uiContext, args })); } catch (System.Reflection.TargetInvocationException ex) { throw ex.InnerException; } }
public IEnumerable <TEntity> ProcessLazyResult <TEntity>(Query.IQueryResult queryResult, Colosoft.Query.ISourceContext sourceContext, string uiContext = null, EntityLoaderLazyArgs args = null) where TEntity : class, IEntity { queryResult.Require("queryResult").NotNull(); var loader = _entityTypeManager.GetLoader(typeof(TEntity)); return(new EntitiesEnumerable <TEntity>(loader.GetLazyEntities(queryResult, sourceContext, uiContext, _entityTypeManager, args))); }
public IEnumerable <TEntity> ProcessLazyResult <TEntity>(Query.Queryable query, Colosoft.Query.ISourceContext sourceContext, string uiContext = null, EntityLoaderLazyArgs args = null) where TEntity : class, IEntity { var loader = _entityTypeManager.GetLoader(typeof(TEntity)); return(new EntitiesEnumerable <TEntity>(loader.GetLazyEntities(query.Execute(), sourceContext, uiContext, _entityTypeManager, args))); }
/// <summary> /// Realiza a carga completa das entidades contidas nos registros informados. /// </summary> /// <param name="result">Registros com os dados da entidades que serão carregadas.</param> /// <param name="sourceContext">Contexto de origem dos dados.</param> /// <param name="uiContext">Converto visual.</param> /// <param name="entityTypeManager">Instancia do gerenciador de tipos de entidades.</param> /// <param name="args"></param> /// <returns></returns> public abstract IEnumerable <IEntity> GetLazyEntities(IEnumerable <Colosoft.Query.IRecord> result, Colosoft.Query.ISourceContext sourceContext, string uiContext, IEntityTypeManager entityTypeManager, EntityLoaderLazyArgs args = null);
/// <summary> /// Realiza a carda da entidade com carga tardia dos dados filhos. /// </summary> /// <param name="record">Registro dos dados da entidade.</param> /// <param name="recordKey">Chave do registro.</param> /// <param name="bindStrategy">Estratégia de vinculação dos dados do resultado.</param> /// <param name="objectCreator">Instancia responsável por criar objetos.</param> /// <param name="sourceContext">Contexto de origem dos dados.</param> /// <param name="uiContext">Contexto visual.</param> /// <param name="entityTypeManager">Instancia do gerenciador de tipos de entidades.</param> /// <param name="args">Argumentos que serão usados</param> /// <returns></returns> public abstract IEntity LazyLoad(Colosoft.Query.IRecord record, Query.RecordKey recordKey, Colosoft.Query.IQueryResultBindStrategy bindStrategy, Colosoft.Query.IQueryResultObjectCreator objectCreator, Colosoft.Query.ISourceContext sourceContext, string uiContext, IEntityTypeManager entityTypeManager, EntityLoaderLazyArgs args = null);
/// <summary> /// Realiza a carga da entidade com carga tardia dos dados filhos. /// </summary> /// <param name="record">Registro dos dados da entidade.</param> /// <param name="recordKey">Chave do registro.</param> /// <param name="sourceContext">Contexto de origem dos dados.</param> /// <param name="uiContext">Contexto visual.</param> /// <param name="entityTypeManager">Instancia do gerenciador de tipos de entidades.</param> /// <param name="args">Argumentos que serão usados</param> /// <returns></returns> public IEntity LazyLoad(Colosoft.Query.IRecord record, Query.RecordKey recordKey, Colosoft.Query.ISourceContext sourceContext, string uiContext, IEntityTypeManager entityTypeManager, EntityLoaderLazyArgs args = null) { return(LazyLoad(record, recordKey, GetBindStrategy(), GetObjectCreator(), sourceContext, uiContext, entityTypeManager, args)); }
/// <summary> /// Realiza a carga da entidade com carga tardia dos dados filhos. /// </summary> /// <param name="query">Instancia da consulta para recuperar a entidade.</param> /// <param name="sourceContext">Contexto de origem dos dados.</param> /// <param name="uiContext">Contexto visual.</param> /// <param name="args">Argumentos que serão usados</param> /// <param name="entityTypeManager">Instancia do gerenciador de tipos de entidades.</param> /// <returns></returns> public virtual IEntity LazyLoad(Colosoft.Query.Queryable query, Colosoft.Query.ISourceContext sourceContext, string uiContext, IEntityTypeManager entityTypeManager, EntityLoaderLazyArgs args = null) { var result = query.Take(1).Execute(); var enumerator = result.GetEnumerator(); if (enumerator.MoveNext()) { var record = enumerator.Current; var bindStrategy = GetBindStrategy(); var objectCreator = GetObjectCreator(); var recordKey = GetRecordKeyFactory().Create(Colosoft.Reflection.TypeName.Get(DataModelType), record); return(LazyLoad(record, recordKey, bindStrategy, objectCreator, sourceContext, uiContext, entityTypeManager)); } else { return(null); } }
/// <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; }