コード例 #1
0
        /// <summary>
        /// 异步向DataSet中填充Command返回的结果
        /// </summary>
        /// <param name="command">Command实例(要求此时Command对象的Connection已经设置并初始化)</param>
        /// <param name="dataSet">待填充的DataSet</param>
        /// <param name="tableNames">每个查询结果的DataTable名称</param>
        /// <param name="pageNo">要求返回数据所在的页码【以0开始】</param>
        /// <param name="pageSize">要求返回数据每一页数据量【如果为零则表示所有数据】</param>
        private async Task DoLoadDataSetAsync(DbCommand command, DataSet dataSet, int pageNo, int pageSize, string[] tableNames)
        {
            CheckTableNames(tableNames);

            using (DbContext context = await DbContext.GetContextAsync(this.name))
            {
                command.Connection = context.Connection;

                using (DbDataAdapter adapter = this.factory.CreateDataAdapter())
                {
                    adapter.SelectCommand = command;

                    AddTableMappingsInAdapter(adapter, tableNames);

                    DoDbEvent(command, DbEventType.BeforeExecution);

                    if (pageSize == 0)
                    {
                        await adapter.FillAsync(dataSet);
                    }
                    else
                    {
                        string srcTableName = tableNames.Length > 0 ? tableNames[0] : "Table";
                        await adapter.FillAsync(dataSet, pageNo *pageSize, pageSize, srcTableName);
                    }

                    DoDbEvent(command, DbEventType.AfterExecution);
                }
            }
        }