/// <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;
            }
        }
示例#2
0
        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)));
        }
示例#3
0
        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)));
        }
示例#4
0
 /// <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);
示例#5
0
 /// <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);
示例#6
0
 /// <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));
 }
示例#7
0
        /// <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;
 }