Beispiel #1
0
        /// <summary>
        /// 加载程序集
        /// </summary>
        /// <param name="statement">statement</param>
        /// <param name="command">指令</param>
        /// <param name="dataSet">程序集</param>
        /// <param name="tableNames">表名称</param>
        private void LoadDataSet(Statement statement, DbCommand command, DataSet dataSet, params String[] tableNames)
        {
            Boolean schemaRequired     = false;
            Boolean disableConstraints = false;

            if (statement.Hints != null && statement.Hints.Contains(DALExtStatementConstant.RETRIEVE_SCHEMA))
            {
                schemaRequired = true;
                if (statement.Hints.Contains(DALExtStatementConstant.DISABLE_CONSTRAINTS))
                {
                    disableConstraints = true;
                }
            }

            if (tableNames == null || tableNames.Length == 0)
            {
                tableNames = new[] { "Table" }
            }
            ;

            for (Int32 i = 0; i < tableNames.Length; i++)
            {
                if (String.IsNullOrEmpty(tableNames[i]))
                {
                    throw new ArgumentException(String.Concat("tableNames[", i, "]"));
                }
            }

            using (var adapter = m_DatabaseProvider.CreateDataAdapter())
            {
                adapter.SelectCommand = command;

                for (Int32 i = 0; i < tableNames.Length; i++)
                {
                    String tableName = (i == 0) ? "Table" : "Table" + i;
                    adapter.TableMappings.Add(tableName, tableNames[i]);
                }

                if (schemaRequired)
                {
                    adapter.FillSchema(dataSet, SchemaType.Mapped);
                    if (disableConstraints)
                    {
                        dataSet.EnforceConstraints = false;
                    }
                }

                adapter.Fill(dataSet);
            }
        }