Exemplo n.º 1
0
        /// <summary>
        /// Internal Extendable method: 创建实体对象
        /// </summary>
        /// <param name="objectAccessor">实体对象访问器</param>
        /// <param name="tableMapper">Table元数据解析器</param>
        /// <param name="reader">数据流</param>
        /// <param name="columnNames">查询结果列的数组</param>
        /// <returns>实体对象</returns>
        internal static object CreateEntity(this ObjectAccessor objectAccessor, ITableMapper tableMapper, IDataReader reader, string[] columnNames)
        {
            //创建对象
            object entity = objectAccessor.CreateInstance();

            //读取DataReader当前行,为entity各个属性赋值
            objectAccessor.Fill(tableMapper.GetColumnMappers(), reader, columnNames, entity);
            //返回对象
            return(entity);
        }
Exemplo n.º 2
0
        public int SelectCollection(IList list, IQueryExpression queryExpression)
        {
            if (queryExpression.EntityType == null)
            {
                throw new InvalidOperationException("queryExpression.EntityType属性不允许空");
            }
            SelectionResult result = SqlProvider.SelectCollection(this, MappingProvider, null, queryExpression);

            int oldCount = list.Count;

            while (result.DataReader.Read())
            {
                object entity = ObjectAccessor.CreateInstance(queryExpression.EntityType);
                ObjectAccessor.Fill(SqlProvider, MappingProvider, result.DataReader, entity, result.ObjectFiller);
                list.Add(entity);
            }

            result.DataReader.Close();
            int i = queryExpression.ReturnMatchedCount ? result.TotalMatchedCount : list.Count - oldCount;

            return(i);
        }