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