示例#1
0
        /// <summary>
        /// 执行懒加载操作。
        /// </summary>
        /// <param name="listProperty">The list property.</param>
        /// <returns></returns>
        private EntityList LoadLazyList(IListProperty listProperty)
        {
            EntityList data = null;

            if (this.FieldExists(listProperty))
            {
                data = this.GetProperty(listProperty) as EntityList;
                if (data != null)
                {
                    return(data);
                }
            }

            if (this.IsNew)
            {
                var listRepository = RepositoryFactoryHost.Factory.FindByEntity(listProperty.ListEntityType);
                data = listRepository.NewList();
            }
            else
            {
                var meta         = listProperty.GetMeta(this) as IListPropertyMetadata;
                var dataProvider = meta.DataProvider;
                if (dataProvider != null)
                {
                    data = dataProvider(this);
                }
                else
                {
                    var listRepository = RepositoryFactoryHost.Factory.FindByEntity(listProperty.ListEntityType) as IRepositoryInternal;
                    data = listRepository.GetLazyListByParent(this);
                    data.SetParentEntity(this);
                }
            }

            this.LoadProperty(listProperty, data);

            return(data);
        }