Esempio n. 1
0
        public virtual object LoadAliasJoinTableData(DataContext context, IDataReader datareader, QueryState queryState, string aliasName)
        {
            object item          = Activator.CreateInstance(ObjectType);
            bool   nodataSetNull = queryState != null?queryState.CheckNoDataSetNull(aliasName) : false;

            bool hasData = false;

            foreach (DataFieldMapping field in this._fieldList)
            {
                if (field == null)
                {
                    continue;
                }
                string name = string.Format("{0}_{1}", aliasName, field.Name);
                if (queryState == null)
                {
                    object obj   = datareader[name];
                    object value = field.ToProperty(obj);
                    if (!Object.Equals(value, null))
                    {
                        field.Handler.Set(item, value);
                    }
                }
                else if (queryState.CheckSelectField(name))
                {
                    object obj   = datareader[name];
                    object value = field.ToProperty(obj);
                    if (!Object.Equals(value, null))
                    {
                        hasData = true;
                        field.Handler.Set(item, value);
                    }
                }
            }
            if (_collectionRelationFields.Count > 0)
            {
                foreach (CollectionRelationFieldMapping mapping in _collectionRelationFields)
                {
                    mapping.Handler.Set(item, mapping.ToProperty(context, item, false));
                }
            }
            if (!hasData && nodataSetNull)
            {
                return(null);
            }
            if (_isDataEntity)
            {
                DataEntity entity = item as DataEntity;
                entity.SetContext(context);
            }
            return(item);
        }
Esempio n. 2
0
        /// <summary>
        /// 创建新对象
        /// </summary>
        /// <typeparam name="T">对象类型</typeparam>
        /// <returns>数据对象</returns>
        public T CreateNew <T>()
            where T : class, new()
        {
            DataTableEntityMapping rawmapping = DataMapping.GetTableMapping(typeof(T));
            T obj = rawmapping.InitialData() as T;

            if (rawmapping.IsDataEntity)
            {
                DataEntity data = obj as DataEntity;
                data.SetContext(this);
            }
            return(obj);
        }
Esempio n. 3
0
        public override object LoadData(DataContext context, IDataReader datareader, object state)
        {
            QueryState queryState = state as QueryState;

            if (this._singleRelationFields.Count > 0)
            {
                queryState.InitialJoinData();
                return(LoadJoinTableData(context, datareader, queryState, string.Empty));
            }
            object item = Activator.CreateInstance(ObjectType);

            foreach (DataFieldMapping field in this._fieldList)
            {
                if (queryState == null)
                {
                    object obj   = datareader[field.Name];
                    object value = field.ToProperty(obj);
                    if (!Object.Equals(value, null))
                    {
                        field.Handler.Set(item, value);
                    }
                }
                else if (queryState.CheckSelectField(field.Name))
                {
                    object obj   = datareader[field.Name];
                    object value = field.ToProperty(obj);
                    if (!Object.Equals(value, null))
                    {
                        field.Handler.Set(item, value);
                    }
                }
            }
            if (_collectionRelationFields.Count > 0)
            {
                foreach (CollectionRelationFieldMapping mapping in _collectionRelationFields)
                {
                    mapping.Handler.Set(item, mapping.ToProperty(context, item, true));
                }
            }
            if (_isDataEntity)
            {
                DataEntity entity = item as DataEntity;
                entity.SetContext(context);
            }
            return(item);
        }
Esempio n. 4
0
        //public virtual void LoadJoinTableData(DataContext context, IDataReader datareader, object item, QueryState queryState, string fieldPath)
        //{
        //    string aliasName = queryState.GetAliasName(fieldPath);
        //    foreach (DataFieldMapping field in this._fieldList) {
        //        string name = string.Format("{0}_{1}", aliasName, field.Name);
        //        if (queryState.CheckSelectField(name)) {
        //            object obj = datareader[name];
        //            object value = field.ToProperty(obj);
        //            if (!Object.Equals(value, null)) {
        //                field.Handler.Set(item, value);
        //            }
        //        }
        //    }
        //    if (_collectionRelationFields.Count > 0) {
        //        foreach (CollectionRelationFieldMapping mapping in _collectionRelationFields) {
        //            mapping.Handler.Set(item, mapping.ToProperty(context, item, true));
        //        }
        //    }

        //    foreach (SingleRelationFieldMapping mapping in _singleRelationFields) {
        //        string fpath = string.Format("{0}.{1}", fieldPath, mapping.FieldName);
        //        object value = mapping.ToProperty(context, datareader, queryState, fpath);
        //        if (!Object.Equals(value, null)) {
        //            mapping.Handler.Set(item, value);
        //        }
        //    }
        //    if (item is DataEntity entity) {
        //        entity.SetContext(context);
        //        entity.LoadDataComplete();
        //    }
        //}

        public virtual object LoadJoinTableData(DataContext context, IDataReader datareader, QueryState queryState, string fieldPath)
        {
            object item = Activator.CreateInstance(this.ObjectType);

            queryState.SetJoinData(fieldPath, item);
            string aliasName = queryState.GetAliasName(fieldPath);

            foreach (DataFieldMapping field in this._fieldList)
            {
                string name = string.Format("{0}_{1}", aliasName, field.Name);
                if (queryState.CheckSelectField(name))
                {
                    object obj   = datareader[name];
                    object value = field.ToProperty(obj);
                    if (!Object.Equals(value, null))
                    {
                        field.Handler.Set(item, value);
                    }
                }
            }
            if (_collectionRelationFields.Count > 0)
            {
                foreach (CollectionRelationFieldMapping mapping in _collectionRelationFields)
                {
                    mapping.Handler.Set(item, mapping.ToProperty(context, item, true));
                }
            }

            foreach (SingleRelationFieldMapping mapping in _singleRelationFields)
            {
                string fpath = string.Format("{0}.{1}", fieldPath, mapping.FieldName);
                object value = mapping.ToProperty(context, datareader, queryState, fpath);
                if (!Object.Equals(value, null))
                {
                    mapping.Handler.Set(item, value);
                }
            }
            if (_isDataEntity)
            {
                DataEntity entity = item as DataEntity;
                entity.SetContext(context);
            }
            return(item);
        }