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