public void ReCreateAuxiliaryTable(string tableEnName, EAuxiliaryTableType tableType) { var defaultTableMetadataInfoList = BaiRongDataProvider.AuxiliaryTableDataDao.GetDefaultTableMetadataInfoList(tableEnName, tableType); if (BaiRongDataProvider.TableStructureDao.IsTableExists(tableEnName)) { var updateParms = new IDataParameter[] { GetParameter("@IsCreatedInDB", EDataType.VarChar, 18, true.ToString()), GetParameter("@IsChangedAfterCreatedInDB", EDataType.VarChar, 18, false.ToString()), GetParameter("@TableENName", EDataType.VarChar, 50, tableEnName) }; var taxis = GetMaxTaxis(tableEnName) + 1; using (var conn = GetConnection()) { conn.Open(); using (var trans = conn.BeginTransaction()) { try { foreach (var tableMetadataInfo in defaultTableMetadataInfoList) { if (GetTableMetadataId(tableEnName, tableMetadataInfo.AttributeName) == 0) { InsertWithTransaction(tableMetadataInfo, tableType, taxis++, trans); } } string dropTableSqlString = $"DROP TABLE [{tableEnName}]"; var createTableSqlString = BaiRongDataProvider.AuxiliaryTableDataDao.GetCreateAuxiliaryTableSqlString(tableEnName); ExecuteNonQuery(trans, dropTableSqlString); var reader = new System.IO.StringReader(createTableSqlString); string sql; while (null != (sql = SqlUtils.ReadNextStatementFromStream(reader))) { ExecuteNonQuery(trans, sql.Trim()); } ExecuteNonQuery(trans, "UPDATE bairong_TableCollection SET IsCreatedInDB = @IsCreatedInDB, IsChangedAfterCreatedInDB = @IsChangedAfterCreatedInDB WHERE TableENName = @TableENName", updateParms); TableManager.IsChanged = true; SqlUtils.Cache_RemoveTableColumnInfoListCache(); trans.Commit(); } catch { trans.Rollback(); throw; } } } } }