示例#1
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);
            }
        }
示例#2
0
        /// <summary>
        /// Realiza a carga completa da entidade.
        /// </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="entityTypeManager">Gerenciador de tipos.</param>
        /// <returns></returns>
        public virtual IEntity FullLoad(Colosoft.Query.Queryable query, Colosoft.Query.ISourceContext sourceContext, string uiContext, IEntityTypeManager entityTypeManager)
        {
            var result     = query.Take(1).Execute();
            var enumerator = result.GetEnumerator();

            if (enumerator.MoveNext())
            {
                var record = enumerator.Current;
                var bindStrategySession = GetBindStrategy().CreateSession(record.Descriptor);
                var objectCreator       = GetObjectCreator();
                var recordKeyFactory    = GetRecordKeyFactory();
                var dataModelTypeName   = Colosoft.Reflection.TypeName.Get(DataModelType);
                var recordKey           = recordKeyFactory.Create(dataModelTypeName, record);
                return(FullLoad(record, recordKey, bindStrategySession, objectCreator, sourceContext, uiContext, entityTypeManager));
            }
            else
            {
                return(null);
            }
        }