示例#1
0
        internal void InsertWithTransaction(TableMetadataInfo info, int taxis, IDbTransaction trans)
        {
            if (IsExistsWithTransaction(info.TableName, info.AttributeName, trans))
            {
                return;
            }

            const string sqlString = "INSERT INTO siteserver_TableMetadata (TableName, AttributeName, DataType, DataLength, Taxis, IsSystem) VALUES (@TableName, @AttributeName, @DataType, @DataLength, @Taxis, @IsSystem)";

            var insertParms = new IDataParameter[]
            {
                GetParameter(ParmTableCollectionInfoEnname, DataType.VarChar, 50, info.TableName),
                GetParameter(ParmAttributeName, DataType.VarChar, 50, info.AttributeName),
                GetParameter(ParmDataType, DataType.VarChar, 50, info.DataType.Value),
                GetParameter(ParmDataLength, DataType.Integer, info.DataLength),
                GetParameter(ParmTaxis, DataType.Integer, taxis),
                GetParameter(ParmIsSystem, DataType.VarChar, 18, info.IsSystem.ToString())
            };

            ExecuteNonQuery(trans, sqlString, insertParms);
            if (info.StyleInfo != null)
            {
                info.StyleInfo.TableName     = info.TableName;
                info.StyleInfo.AttributeName = info.AttributeName;
                DataProvider.TableStyleDao.InsertWithTransaction(info.StyleInfo, trans);
                TableStyleManager.IsChanged = true;
            }

            TableMetadataManager.ClearCache();
        }
示例#2
0
        public void Insert(TableMetadataInfo info)
        {
            if (IsExists(info.TableName, info.AttributeName))
            {
                return;
            }

            const string sqlString = "INSERT INTO siteserver_TableMetadata (TableName, AttributeName, DataType, DataLength, Taxis, IsSystem) VALUES (@TableName, @AttributeName, @DataType, @DataLength, @Taxis, @IsSystem)";

            var parameters = new IDataParameter[]
            {
                GetParameter(ParmTableCollectionInfoEnname, DataType.VarChar, 50, info.TableName),
                GetParameter(ParmAttributeName, DataType.VarChar, 50, info.AttributeName),
                GetParameter(ParmDataType, DataType.VarChar, 50, info.DataType.Value),
                GetParameter(ParmDataLength, DataType.Integer, info.DataLength),
                GetParameter(ParmTaxis, DataType.Integer, GetMaxTaxis(info.TableName) + 1),
                GetParameter(ParmIsSystem, DataType.VarChar, 18, info.IsSystem.ToString())
            };

            ExecuteNonQuery(sqlString, parameters);

            DataProvider.TableDao.UpdateAttributeNum(info.TableName);
            DataProvider.TableDao.UpdateIsChangedAfterCreatedInDbToTrue(info.TableName);

            TableMetadataManager.ClearCache();
        }
示例#3
0
 public bool IsColumnEquals(TableMetadataInfo metadataInfo, TableColumnInfo columnInfo)
 {
     if (!StringUtils.EqualsIgnoreCase(metadataInfo.AttributeName, columnInfo.ColumnName)) return false;
     if (metadataInfo.DataType != columnInfo.DataType) return false;
     if (metadataInfo.DataLength != columnInfo.Length) return false;
     return true;
 }
示例#4
0
        public List <string> GetAddColumnsSqlString(string tableName, TableMetadataInfo metadataInfo)
        {
            var sqlList         = new List <string>();
            var columnSqlString = SqlUtils.GetColumnSqlString(metadataInfo.DataType, metadataInfo.AttributeName, metadataInfo.DataLength);
            var alterSqlString  = SqlUtils.GetAddColumnsSqlString(tableName, columnSqlString);

            sqlList.Add(alterSqlString);
            return(sqlList);
        }
示例#5
0
        protected List <string> GetAlterAddColumnSqls(string tableEnName, TableMetadataInfo metadataInfo)
        {
            var    sqlList         = new List <string>();
            var    columnSqlString = SqlUtils.GetColumnSqlString(metadataInfo.DataType, metadataInfo.AttributeName, metadataInfo.DataLength);
            string alterSqlString  = $"ALTER TABLE [{tableEnName}] ADD {columnSqlString}";

            sqlList.Add(alterSqlString);
            return(sqlList);
        }
示例#6
0
        private static void ContentTableUpdateMetadatas(string tableName, List <TableColumn> tableColumns)
        {
            var metadataInfoListToInsert = new List <TableMetadataInfo>();
            var metadataInfoListToUpdate = new List <TableMetadataInfo>();

            foreach (var tableColumn in tableColumns)
            {
                if (string.IsNullOrEmpty(tableColumn.AttributeName) ||
                    ContentAttribute.AllAttributesLowercase.Contains(tableColumn.AttributeName.ToLower()))
                {
                    continue;
                }

                if (!TableMetadataManager.IsAttributeNameExists(tableName, tableColumn.AttributeName))
                {
                    var metadataInfo = new TableMetadataInfo(0, tableName,
                                                             tableColumn.AttributeName, tableColumn.DataType,
                                                             tableColumn.DataLength, 0, true);
                    metadataInfoListToInsert.Add(metadataInfo);
                }
                else
                {
                    var isEquals = true;

                    var metadataInfo = TableMetadataManager.GetTableMetadataInfo(tableName, tableColumn.AttributeName);

                    if (metadataInfo.DataType != tableColumn.DataType)
                    {
                        isEquals = false;
                        metadataInfo.DataType = tableColumn.DataType;
                    }

                    if (metadataInfo.DataLength != tableColumn.DataLength)
                    {
                        isEquals = false;
                        metadataInfo.DataLength = tableColumn.DataLength;
                    }

                    if (isEquals)
                    {
                        continue;
                    }

                    metadataInfoListToUpdate.Add(metadataInfo);
                }
            }

            foreach (var metadataInfo in metadataInfoListToInsert)
            {
                DataProvider.TableMetadataDao.Insert(metadataInfo);
            }
            foreach (var metadataInfo in metadataInfoListToUpdate)
            {
                DataProvider.TableMetadataDao.Update(metadataInfo);
            }
        }
示例#7
0
        private static AtomEntry GetAtomEntry(TableMetadataInfo metaInfo)
        {
            var entry = AtomUtility.GetEmptyEntry();

            AtomUtility.AddDcElement(entry.AdditionalElements, "TableMetadataID", metaInfo.TableMetadataId.ToString());
            AtomUtility.AddDcElement(entry.AdditionalElements, "AuxiliaryTableENName", metaInfo.AuxiliaryTableEnName);
            AtomUtility.AddDcElement(entry.AdditionalElements, "AttributeName", metaInfo.AttributeName);
            AtomUtility.AddDcElement(entry.AdditionalElements, "DataType", EDataTypeUtils.GetValue(metaInfo.DataType));
            AtomUtility.AddDcElement(entry.AdditionalElements, "DataLength", metaInfo.DataLength.ToString());
            AtomUtility.AddDcElement(entry.AdditionalElements, "Taxis", metaInfo.Taxis.ToString());
            AtomUtility.AddDcElement(entry.AdditionalElements, "IsSystem", metaInfo.IsSystem.ToString());

            return(entry);
        }
示例#8
0
        public TableMetadataInfo GetTableMetadataInfo(int id)
        {
            TableMetadataInfo info = null;

            var parms = new IDataParameter[]
            {
                GetParameter(ParmId, DataType.Integer, id)
            };

            using (var rdr = ExecuteReader(SqlSelectTableMetadata, parms))
            {
                if (rdr.Read())
                {
                    var i = 0;
                    info = new TableMetadataInfo(GetInt(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), DataTypeUtils.GetEnumType(GetString(rdr, i++)), GetInt(rdr, i++), GetInt(rdr, i++), GetBool(rdr, i));
                }
                rdr.Close();
            }

            return(info);
        }
示例#9
0
        public List <TableMetadataInfo> GetTableMetadataInfoList(string tableName)
        {
            var list = new List <TableMetadataInfo>();

            var parms = new IDataParameter[]
            {
                GetParameter(ParmTableCollectionInfoEnname, DataType.VarChar, 50, tableName)
            };

            using (var rdr = ExecuteReader(SqlSelectAllTableMetadataByEnname, parms))
            {
                while (rdr.Read())
                {
                    var i    = 0;
                    var info = new TableMetadataInfo(GetInt(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), DataTypeUtils.GetEnumType(GetString(rdr, i++)), GetInt(rdr, i++), GetInt(rdr, i++), GetBool(rdr, i));
                    list.Add(info);
                }
                rdr.Close();
            }
            return(list);
        }
示例#10
0
        public TableMetadataInfo GetTableMetadataInfo(string tableName, string attributeName)
        {
            TableMetadataInfo info = null;

            var parms = new IDataParameter[]
            {
                GetParameter(ParmTableCollectionInfoEnname, DataType.VarChar, 50, tableName),
                GetParameter(ParmAttributeName, DataType.VarChar, 50, attributeName)
            };

            using (var rdr = ExecuteReader(SqlSelectTableMetadataByTableNameAndAttributeName, parms))
            {
                if (rdr.Read())
                {
                    var i = 0;
                    info = new TableMetadataInfo(GetInt(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), DataTypeUtils.GetEnumType(GetString(rdr, i++)), GetInt(rdr, i++), GetInt(rdr, i++), GetBool(rdr, i));
                }
                rdr.Close();
            }

            return(info);
        }
示例#11
0
        public void Update(TableMetadataInfo info)
        {
            var isSqlChanged = true;
            var originalInfo = GetTableMetadataInfo(info.TableMetadataId);

            if (originalInfo != null)
            {
                if (info.AuxiliaryTableEnName == originalInfo.AuxiliaryTableEnName &&
                    info.AttributeName == originalInfo.AttributeName &&
                    info.DataType == originalInfo.DataType &&
                    info.DataLength == originalInfo.DataLength &&
                    info.Taxis == originalInfo.Taxis)
                {
                    isSqlChanged = false;
                }
            }

            var updateParms = new IDataParameter[]
            {
                GetParameter(ParmAuxiliaryTableEnname, EDataType.VarChar, 50, info.AuxiliaryTableEnName),
                GetParameter(ParmAttributeName, EDataType.VarChar, 50, info.AttributeName),
                GetParameter(ParmDataType, EDataType.VarChar, 50, EDataTypeUtils.GetValue(info.DataType)),
                GetParameter(ParmDataLength, EDataType.Integer, info.DataLength),
                GetParameter(ParmIsSystem, EDataType.VarChar, 18, info.IsSystem.ToString()),
                GetParameter(ParmTableMetadataId, EDataType.Integer, info.TableMetadataId)
            };

            using (var conn = GetConnection())
            {
                conn.Open();
                ExecuteNonQuery(conn, SqlUpdateTableMetadata, updateParms);
                if (isSqlChanged)
                {
                    BaiRongDataProvider.TableCollectionDao.UpdateIsChangedAfterCreatedInDb(true, info.AuxiliaryTableEnName);
                }
                TableManager.IsChanged = true;
            }
        }
示例#12
0
        public List <TableMetadataInfo> GetDefaultTableMetadataInfoList(string tableName)
        {
            var list = new List <TableMetadataInfo>();

            var metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.SubTitle, DataType.VarChar, 255, 0, true);

            list.Add(metadataInfo);
            metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.ImageUrl, DataType.VarChar, 200, 0, true);
            list.Add(metadataInfo);
            metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.VideoUrl, DataType.VarChar, 200, 0, true);
            list.Add(metadataInfo);
            metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.FileUrl, DataType.VarChar, 200, 0, true);
            list.Add(metadataInfo);
            metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.Content, DataType.Text, 16, 0, true);
            list.Add(metadataInfo);
            metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.Summary, DataType.Text, 16, 0, true);
            list.Add(metadataInfo);
            metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.Author, DataType.VarChar, 255, 0, true);
            list.Add(metadataInfo);
            metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.Source, DataType.VarChar, 255, 0, true);
            list.Add(metadataInfo);
            return(list);
        }
示例#13
0
        public void Update(TableMetadataInfo info)
        {
            var isSqlChanged = true;
            var originalInfo = GetTableMetadataInfo(info.Id);

            if (originalInfo != null)
            {
                if (StringUtils.EqualsIgnoreCase(info.TableName, originalInfo.TableName) &&
                    StringUtils.EqualsIgnoreCase(info.AttributeName, originalInfo.AttributeName) &&
                    info.DataType == originalInfo.DataType &&
                    info.DataLength == originalInfo.DataLength &&
                    info.IsSystem == originalInfo.IsSystem)
                {
                    isSqlChanged = false;
                }
            }

            if (!isSqlChanged)
            {
                return;
            }

            var updateParms = new IDataParameter[]
            {
                GetParameter(ParmTableCollectionInfoEnname, DataType.VarChar, 50, info.TableName),
                GetParameter(ParmAttributeName, DataType.VarChar, 50, info.AttributeName),
                GetParameter(ParmDataType, DataType.VarChar, 50, info.DataType.Value),
                GetParameter(ParmDataLength, DataType.Integer, info.DataLength),
                GetParameter(ParmIsSystem, DataType.VarChar, 18, info.IsSystem.ToString()),
                GetParameter(ParmId, DataType.Integer, info.Id)
            };

            ExecuteNonQuery(SqlUpdateTableMetadata, updateParms);

            DataProvider.TableDao.UpdateIsChangedAfterCreatedInDbToTrue(info.TableName);
            TableMetadataManager.ClearCache();
        }
示例#14
0
        public void Insert(TableMetadataInfo info)
        {
            var sqlString = "INSERT INTO bairong_TableMetadata (AuxiliaryTableENName, AttributeName, DataType, DataLength, Taxis, IsSystem) VALUES (@AuxiliaryTableENName, @AttributeName, @DataType, @DataLength, @Taxis, @IsSystem)";

            var insertParms = new IDataParameter[]
            {
                GetParameter(ParmAuxiliaryTableEnname, EDataType.VarChar, 50, info.AuxiliaryTableEnName),
                GetParameter(ParmAttributeName, EDataType.VarChar, 50, info.AttributeName),
                GetParameter(ParmDataType, EDataType.VarChar, 50, EDataTypeUtils.GetValue(info.DataType)),
                GetParameter(ParmDataLength, EDataType.Integer, info.DataLength),
                GetParameter(ParmTaxis, EDataType.Integer, GetMaxTaxis(info.AuxiliaryTableEnName) + 1),
                GetParameter(ParmIsSystem, EDataType.VarChar, 18, info.IsSystem.ToString())
            };

            using (var conn = GetConnection())
            {
                conn.Open();
                ExecuteNonQuery(conn, sqlString, insertParms);

                BaiRongDataProvider.TableCollectionDao.UpdateAttributeNum(info.AuxiliaryTableEnName);
                BaiRongDataProvider.TableCollectionDao.UpdateIsChangedAfterCreatedInDb(true, info.AuxiliaryTableEnName);
                TableManager.IsChanged = true;
            }
        }
示例#15
0
        internal void InsertWithTransaction(TableMetadataInfo info, EAuxiliaryTableType tableType, int taxis, IDbTransaction trans)
        {
            var sqlString = "INSERT INTO bairong_TableMetadata (AuxiliaryTableENName, AttributeName, DataType, DataLength, Taxis, IsSystem) VALUES (@AuxiliaryTableENName, @AttributeName, @DataType, @DataLength, @Taxis, @IsSystem)";

            var insertParms = new IDataParameter[]
            {
                GetParameter(ParmAuxiliaryTableEnname, EDataType.VarChar, 50, info.AuxiliaryTableEnName),
                GetParameter(ParmAttributeName, EDataType.VarChar, 50, info.AttributeName),
                GetParameter(ParmDataType, EDataType.VarChar, 50, EDataTypeUtils.GetValue(info.DataType)),
                GetParameter(ParmDataLength, EDataType.Integer, info.DataLength),
                GetParameter(ParmTaxis, EDataType.Integer, taxis),
                GetParameter(ParmIsSystem, EDataType.VarChar, 18, info.IsSystem.ToString())
            };

            ExecuteNonQuery(trans, sqlString, insertParms);
            if (info.StyleInfo != null)
            {
                info.StyleInfo.TableName     = info.AuxiliaryTableEnName;
                info.StyleInfo.AttributeName = info.AttributeName;
                BaiRongDataProvider.TableStyleDao.InsertWithTransaction(info.StyleInfo, EAuxiliaryTableTypeUtils.GetTableStyle(tableType), trans);
                TableStyleManager.IsChanged = true;
            }
            TableManager.IsChanged = true;
        }
示例#16
0
        public override void Submit_OnClick(object sender, EventArgs e)
        {
            var isChanged = false;

            if (Body.IsQueryExists("TableMetadataID"))
            {
                var tableMetadataId = Body.GetQueryInt("TableMetadataID");

                var info = DataProvider.TableMetadataDao.GetTableMetadataInfo(tableMetadataId);
                info.TableName     = _tableName;
                info.AttributeName = TbAttributeName.Text;
                info.DataType      = DataTypeUtils.GetEnumType(DdlDataType.SelectedValue);

                if (info.DataType == DataType.VarChar)
                {
                    info.DataLength = TranslateUtils.ToInt(TbDataLength.Text);
                    var maxLength = SqlUtils.GetMaxLengthForNVarChar();
                    if (info.DataLength <= 0 || info.DataLength > maxLength)
                    {
                        FailMessage($"字段修改失败,数据长度的值必须位于 1 和 {maxLength} 之间");
                        return;
                    }
                }

                try
                {
                    DataProvider.TableMetadataDao.Update(info);

                    Body.AddAdminLog("修改辅助表字段",
                                     $"辅助表:{_tableName},字段名:{info.AttributeName}");

                    isChanged = true;
                }
                catch (Exception ex)
                {
                    FailMessage(ex, ex.Message);
                }
            }
            else
            {
                var attributeNameList = TableMetadataManager.GetAttributeNameList(_tableName, true);

                var attributeNameLowercase = TbAttributeName.Text.Trim().ToLower();
                if (attributeNameList.Contains(attributeNameLowercase) || ContentAttribute.AllAttributesLowercase.Contains(attributeNameLowercase))
                {
                    FailMessage("字段添加失败,字段名已存在!");
                }
                else if (!SqlUtils.IsAttributeNameCompliant(TbAttributeName.Text))
                {
                    FailMessage("字段名不符合系统要求!");
                }
                else
                {
                    var info = new TableMetadataInfo
                    {
                        TableName     = _tableName,
                        AttributeName = TbAttributeName.Text,
                        DataType      = DataTypeUtils.GetEnumType(DdlDataType.SelectedValue)
                    };

                    if (info.DataType == DataType.VarChar)
                    {
                        info.DataLength = TranslateUtils.ToInt(TbDataLength.Text);
                        var maxLength = SqlUtils.GetMaxLengthForNVarChar();
                        if (info.DataLength <= 0 || info.DataLength > maxLength)
                        {
                            FailMessage($"字段修改失败,数据长度的值必须位于 1 和 {maxLength} 之间");
                            return;
                        }
                    }
                    info.IsSystem = false;

                    try
                    {
                        DataProvider.TableMetadataDao.Insert(info);

                        Body.AddAdminLog("添加辅助表字段",
                                         $"辅助表:{_tableName},字段名:{info.AttributeName}");

                        isChanged = true;
                    }
                    catch (Exception ex)
                    {
                        FailMessage(ex, ex.Message);
                    }
                }
            }

            if (isChanged)
            {
                LayerUtils.Close(Page);
            }
        }
        public override void Submit_OnClick(object sender, EventArgs e)
        {
            var isChanged = false;

            var attributeNameList = TranslateUtils.StringCollectionToStringList(Request.Form["attributeName"]);
            var dataTypeList      = TranslateUtils.StringCollectionToStringList(Request.Form["dataType"]);
            var dataLengthList    = TranslateUtils.StringCollectionToStringList(Request.Form["dataLength"]);

            for (var i = 0; i < attributeNameList.Count; i++)
            {
                if (dataTypeList.Count < attributeNameList.Count)
                {
                    dataTypeList.Add(string.Empty);
                }
                if (dataLengthList.Count < attributeNameList.Count)
                {
                    dataLengthList.Add(string.Empty);
                }
            }

            var tableStyle             = EAuxiliaryTableTypeUtils.GetTableStyle(_tableType);
            var attributeNameArrayList = TableManager.GetAttributeNameList(tableStyle, _tableName, true);

            attributeNameArrayList.AddRange(TableManager.GetHiddenAttributeNameList(tableStyle));

            for (var i = 0; i < attributeNameList.Count; i++)
            {
                var attributeName = attributeNameList[i];
                var dataType      = dataTypeList[i];
                var dataLength    = dataLengthList[i];

                if (attributeNameArrayList.IndexOf(attributeName.Trim().ToLower()) != -1)
                {
                    FailMessage("字段添加失败,字段名已存在!");
                }
                else if (!SqlUtils.IsAttributeNameCompliant(attributeName))
                {
                    FailMessage("字段名不符合系统要求!");
                }
                else
                {
                    var info = new TableMetadataInfo
                    {
                        AuxiliaryTableEnName = _tableName,
                        AttributeName        = attributeName,
                        DataType             = EDataTypeUtils.GetEnumType(dataType)
                    };

                    var hashtable = new Hashtable
                    {
                        [EDataType.DateTime] = new[] { "8", "false" },
                        [EDataType.Integer]  = new[] { "4", "false" },
                        [EDataType.NChar]    = new[] { "50", "true" },
                        [EDataType.NText]    = new[] { "16", "false" },
                        [EDataType.NVarChar] = new[] { "255", "true" }
                    };

                    var strArr = (string[])hashtable[EDataTypeUtils.GetEnumType(dataType)];
                    if (strArr[1].Equals("false"))
                    {
                        dataLength = strArr[0];
                    }

                    if (string.IsNullOrEmpty(dataLength))
                    {
                        dataLength = strArr[0];
                    }

                    info.DataLength = int.Parse(dataLength);
                    if (info.DataType == EDataType.NVarChar || info.DataType == EDataType.NChar)
                    {
                        var maxLength = SqlUtils.GetMaxLengthForNVarChar();
                        if (info.DataLength <= 0 || info.DataLength > maxLength)
                        {
                            FailMessage($"字段修改失败,数据长度的值必须位于 1 和 {maxLength} 之间");
                            return;
                        }
                    }
                    info.IsSystem = false;

                    try
                    {
                        BaiRongDataProvider.TableMetadataDao.Insert(info);

                        Body.AddAdminLog("添加辅助表字段",
                                         $"辅助表:{_tableName},字段名:{info.AttributeName}");

                        isChanged = true;
                    }
                    catch (Exception ex)
                    {
                        FailMessage(ex, ex.Message);
                    }
                }
            }

            if (isChanged)
            {
                PageUtils.CloseModalPage(Page);
            }
        }
示例#18
0
        /// <summary>
        /// 将频道模板中的辅助表导入发布系统中,返回修改了的表名对照
        /// 在导入辅助表的同时检查发布系统辅助表并替换对应表
        /// </summary>
        public NameValueCollection ImportAuxiliaryTables(int publishmentSystemId, bool isUserTables)
        {
            if (!DirectoryUtils.IsDirectoryExists(_directoryPath))
            {
                return(null);
            }

            var publishmentSystemInfo = PublishmentSystemManager.GetPublishmentSystemInfo(publishmentSystemId);

            var nameValueCollection = new NameValueCollection();
            var tableNamePrefix     = publishmentSystemInfo.PublishmentSystemDir + "_";

            var filePaths = DirectoryUtils.GetFilePaths(_directoryPath);

            foreach (var filePath in filePaths)
            {
                var feed = AtomFeed.Load(FileUtils.GetFileStreamReadOnly(filePath));

                var tableName = AtomUtility.GetDcElementContent(feed.AdditionalElements, "TableENName");
                var tableType = EAuxiliaryTableTypeUtils.GetEnumType(AtomUtility.GetDcElementContent(feed.AdditionalElements, "AuxiliaryTableType"));

                if (!isUserTables)
                {
                    nameValueCollection[tableName] = NodeManager.GetTableName(publishmentSystemInfo, tableType);
                    continue;
                }

                var tableCnName      = AtomUtility.GetDcElementContent(feed.AdditionalElements, "TableCNName");
                var serializedString = AtomUtility.GetDcElementContent(feed.AdditionalElements, "SerializedString");

                var tableNameToInsert = string.Empty;//需要增加的表名,空代表不需要添加辅助表

                var tableInfo = BaiRongDataProvider.TableCollectionDao.GetAuxiliaryTableInfo(tableName);
                if (tableInfo == null)//如果当前系统无此表名
                {
                    tableNameToInsert = tableName;
                }
                else
                {
                    var serializedStringForExistTable = TableManager.GetSerializedString(tableName);

                    if (!string.IsNullOrEmpty(serializedString))
                    {
                        if (serializedString != serializedStringForExistTable)//仅有此时,导入表需要修改表名
                        {
                            tableNameToInsert = tableNamePrefix + tableName;
                            tableCnName       = tableNamePrefix + tableCnName;
                            nameValueCollection[tableName] = tableNameToInsert;
                        }
                    }
                }

                if (!string.IsNullOrEmpty(tableNameToInsert))//需要添加
                {
                    if (!BaiRongDataProvider.TableStructureDao.IsTableExists(tableNameToInsert))
                    {
                        tableInfo = new AuxiliaryTableInfo
                        {
                            TableEnName               = tableNameToInsert,
                            TableCnName               = tableCnName,
                            AttributeNum              = 0,
                            AuxiliaryTableType        = tableType,
                            IsCreatedInDb             = false,
                            IsChangedAfterCreatedInDb = false,
                            Description               = AtomUtility.GetDcElementContent(feed.AdditionalElements, "Description")
                        };

                        BaiRongDataProvider.TableCollectionDao.Insert(tableInfo);

                        var tableStyle = EAuxiliaryTableTypeUtils.GetTableStyle(tableInfo.AuxiliaryTableType);

                        var attributeNameList =
                            TableManager.GetAttributeNameList(tableStyle, tableInfo.TableEnName, true);
                        attributeNameList.AddRange(
                            TableManager.GetHiddenAttributeNameList(tableStyle));

                        foreach (AtomEntry entry in feed.Entries)
                        {
                            var metaInfo = new TableMetadataInfo
                            {
                                AuxiliaryTableEnName = tableNameToInsert,
                                AttributeName        =
                                    AtomUtility.GetDcElementContent(entry.AdditionalElements, "AttributeName"),
                                DataType = EDataTypeUtils.GetEnumType(
                                    AtomUtility.GetDcElementContent(entry.AdditionalElements, "DataType")),
                                DataLength = TranslateUtils.ToInt(
                                    AtomUtility.GetDcElementContent(entry.AdditionalElements, "DataLength")),
                                Taxis =
                                    TranslateUtils.ToInt(AtomUtility.GetDcElementContent(entry.AdditionalElements,
                                                                                         "Taxis")),
                                IsSystem = TranslateUtils.ToBool(
                                    AtomUtility.GetDcElementContent(entry.AdditionalElements, "IsSystem"))
                            };

                            if (attributeNameList.IndexOf(metaInfo.AttributeName.Trim().ToLower()) != -1)
                            {
                                continue;
                            }

                            if (metaInfo.IsSystem)
                            {
                                continue;
                            }

                            BaiRongDataProvider.TableMetadataDao.Insert(metaInfo);
                        }

                        BaiRongDataProvider.TableMetadataDao.CreateAuxiliaryTable(tableNameToInsert);
                    }
                }

                var tableNameToChange = (!string.IsNullOrEmpty(tableNameToInsert)) ? tableNameToInsert : tableName;
                //更新发布系统后台内容表及栏目表
                if (tableType == EAuxiliaryTableType.BackgroundContent)
                {
                    publishmentSystemInfo.AuxiliaryTableForContent = tableNameToChange;
                    DataProvider.PublishmentSystemDao.Update(publishmentSystemInfo);
                }
                else if (tableType == EAuxiliaryTableType.GovPublicContent)
                {
                    publishmentSystemInfo.AuxiliaryTableForGovPublic = tableNameToChange;
                    DataProvider.PublishmentSystemDao.Update(publishmentSystemInfo);
                }
                else if (tableType == EAuxiliaryTableType.GovInteractContent)
                {
                    publishmentSystemInfo.AuxiliaryTableForGovInteract = tableNameToChange;
                    DataProvider.PublishmentSystemDao.Update(publishmentSystemInfo);
                }
                else if (tableType == EAuxiliaryTableType.JobContent)
                {
                    publishmentSystemInfo.AuxiliaryTableForJob = tableNameToChange;
                    DataProvider.PublishmentSystemDao.Update(publishmentSystemInfo);
                }
                else if (tableType == EAuxiliaryTableType.VoteContent)
                {
                    publishmentSystemInfo.AuxiliaryTableForVote = tableNameToChange;
                    DataProvider.PublishmentSystemDao.Update(publishmentSystemInfo);
                }
            }

            return(nameValueCollection);
        }
        public List <TableMetadataInfo> GetDefaultTableMetadataInfoList(string tableName, EAuxiliaryTableType tableType)
        {
            var arraylist = new List <TableMetadataInfo>();

            if (tableType == EAuxiliaryTableType.BackgroundContent)
            {
                var metadataInfo = new TableMetadataInfo(0, tableName, ContentAttribute.Title, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.SubTitle, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.ImageUrl, EDataType.VarChar, 200, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.VideoUrl, EDataType.VarChar, 200, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.FileUrl, EDataType.VarChar, 200, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.LinkUrl, EDataType.NVarChar, 200, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.Content, EDataType.NText, 16, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.Summary, EDataType.NText, 16, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.Author, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.Source, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.IsRecommend, EDataType.VarChar, 18, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.IsHot, EDataType.VarChar, 18, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, BackgroundContentAttribute.IsColor, EDataType.VarChar, 18, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, ContentAttribute.IsTop, EDataType.VarChar, 18, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, ContentAttribute.AddDate, EDataType.DateTime, 8, 0, true);
                arraylist.Add(metadataInfo);
            }
            else if (tableType == EAuxiliaryTableType.GovPublicContent)
            {
                var metadataInfo = new TableMetadataInfo(0, tableName, ContentAttribute.Title, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovPublicContentAttribute.Identifier, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovPublicContentAttribute.Description, EDataType.NText, 16, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovPublicContentAttribute.PublishDate, EDataType.DateTime, 8, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovPublicContentAttribute.EffectDate, EDataType.DateTime, 8, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovPublicContentAttribute.IsAbolition, EDataType.VarChar, 18, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovPublicContentAttribute.AbolitionDate, EDataType.DateTime, 8, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovPublicContentAttribute.DocumentNo, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovPublicContentAttribute.Publisher, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovPublicContentAttribute.Keywords, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovPublicContentAttribute.ImageUrl, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovPublicContentAttribute.FileUrl, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovPublicContentAttribute.IsRecommend, EDataType.VarChar, 18, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovPublicContentAttribute.IsHot, EDataType.VarChar, 18, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovPublicContentAttribute.IsColor, EDataType.VarChar, 18, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, ContentAttribute.IsTop, EDataType.VarChar, 18, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovPublicContentAttribute.Content, EDataType.NText, 16, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, ContentAttribute.AddDate, EDataType.DateTime, 8, 0, true);
                arraylist.Add(metadataInfo);
            }
            else if (tableType == EAuxiliaryTableType.GovInteractContent)
            {
                var metadataInfo = new TableMetadataInfo(0, tableName, GovInteractContentAttribute.RealName, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovInteractContentAttribute.Organization, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovInteractContentAttribute.CardType, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovInteractContentAttribute.CardNo, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovInteractContentAttribute.Phone, EDataType.VarChar, 50, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovInteractContentAttribute.PostCode, EDataType.VarChar, 50, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovInteractContentAttribute.Address, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovInteractContentAttribute.Email, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovInteractContentAttribute.Fax, EDataType.VarChar, 50, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovInteractContentAttribute.TypeId, EDataType.Integer, 38, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovInteractContentAttribute.IsPublic, EDataType.VarChar, 18, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovInteractContentAttribute.Title, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovInteractContentAttribute.Content, EDataType.NText, 16, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovInteractContentAttribute.FileUrl, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, GovInteractContentAttribute.DepartmentId, EDataType.Integer, 38, 0, true);
                arraylist.Add(metadataInfo);
            }
            else if (tableType == EAuxiliaryTableType.VoteContent)
            {
                var metadataInfo = new TableMetadataInfo(0, tableName, VoteContentAttribute.Title, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, VoteContentAttribute.SubTitle, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, VoteContentAttribute.MaxSelectNum, EDataType.Integer, 38, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, VoteContentAttribute.ImageUrl, EDataType.VarChar, 200, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, VoteContentAttribute.Content, EDataType.NText, 16, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, VoteContentAttribute.Summary, EDataType.NText, 16, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, VoteContentAttribute.AddDate, EDataType.DateTime, 8, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, VoteContentAttribute.EndDate, EDataType.DateTime, 8, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, VoteContentAttribute.IsVotedView, EDataType.VarChar, 18, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, VoteContentAttribute.HiddenContent, EDataType.NText, 16, 0, true);
                arraylist.Add(metadataInfo);
            }
            else if (tableType == EAuxiliaryTableType.JobContent)
            {
                var metadataInfo = new TableMetadataInfo(0, tableName, ContentAttribute.Title, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, JobContentAttribute.Department, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, JobContentAttribute.Location, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, JobContentAttribute.NumberOfPeople, EDataType.NVarChar, 50, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, JobContentAttribute.Responsibility, EDataType.NText, 16, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, JobContentAttribute.Requirement, EDataType.NText, 16, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, JobContentAttribute.IsUrgent, EDataType.VarChar, 18, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, ContentAttribute.IsTop, EDataType.VarChar, 18, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, ContentAttribute.AddDate, EDataType.DateTime, 8, 0, true);
                arraylist.Add(metadataInfo);
            }
            else if (tableType == EAuxiliaryTableType.UserDefined)
            {
                var metadataInfo = new TableMetadataInfo(0, tableName, ContentAttribute.Title, EDataType.NVarChar, 255, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, ContentAttribute.IsTop, EDataType.VarChar, 18, 0, true);
                arraylist.Add(metadataInfo);
                metadataInfo = new TableMetadataInfo(0, tableName, ContentAttribute.AddDate, EDataType.DateTime, 8, 0, true);
                arraylist.Add(metadataInfo);
            }
            return(arraylist);
        }
示例#20
0
        /// <summary>
        /// 将频道模板中的辅助表导入发布系统中,返回修改了的表名对照
        /// 在导入辅助表的同时检查发布系统辅助表并替换对应表
        /// </summary>
        public NameValueCollection ImportAuxiliaryTables(int siteId, bool isUserTables)
        {
            if (!DirectoryUtils.IsDirectoryExists(_directoryPath))
            {
                return(null);
            }

            var siteInfo = SiteManager.GetSiteInfo(siteId);

            var nameValueCollection = new NameValueCollection();
            var tableNamePrefix     = siteInfo.SiteDir + "_";

            var filePaths = DirectoryUtils.GetFilePaths(_directoryPath);

            foreach (var filePath in filePaths)
            {
                var feed = AtomFeed.Load(FileUtils.GetFileStreamReadOnly(filePath));

                var tableName = AtomUtility.GetDcElementContent(feed.AdditionalElements, new List <string> {
                    nameof(TableInfo.TableName), "TableENName"
                });

                if (!isUserTables)
                {
                    nameValueCollection[tableName] = siteInfo.TableName;
                    continue;
                }

                var displayName = AtomUtility.GetDcElementContent(feed.AdditionalElements, new List <string> {
                    nameof(TableInfo.DisplayName), "TableCNName"
                });

                var serializedString = AtomUtility.GetDcElementContent(feed.AdditionalElements, "SerializedString");

                var tableNameToInsert = string.Empty;//需要增加的表名,空代表不需要添加辅助表

                var tableInfo = DataProvider.TableDao.GetTableCollectionInfo(tableName);
                if (tableInfo == null)//如果当前系统无此表名
                {
                    tableNameToInsert = tableName;
                }
                else
                {
                    var serializedStringForExistTable = TableMetadataManager.GetSerializedString(tableName);

                    if (!string.IsNullOrEmpty(serializedString))
                    {
                        if (serializedString != serializedStringForExistTable)//仅有此时,导入表需要修改表名
                        {
                            tableNameToInsert = tableNamePrefix + tableName;
                            displayName       = tableNamePrefix + displayName;
                            nameValueCollection[tableName] = tableNameToInsert;
                        }
                    }
                }

                if (!string.IsNullOrEmpty(tableNameToInsert))//需要添加
                {
                    if (!DataProvider.DatabaseDao.IsTableExists(tableNameToInsert))
                    {
                        tableInfo = new TableInfo
                        {
                            TableName                 = tableNameToInsert,
                            DisplayName               = displayName,
                            AttributeNum              = 0,
                            IsCreatedInDb             = false,
                            IsChangedAfterCreatedInDb = false,
                            Description               = AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableInfo.Description))
                        };

                        var metadataInfoList = new List <TableMetadataInfo>();
                        foreach (AtomEntry entry in feed.Entries)
                        {
                            var metaInfo = new TableMetadataInfo
                            {
                                TableName     = tableNameToInsert,
                                AttributeName = AtomUtility.GetDcElementContent(entry.AdditionalElements, nameof(TableMetadataInfo.AttributeName)),
                                DataType      = DataTypeUtils.GetEnumType(AtomUtility.GetDcElementContent(entry.AdditionalElements, nameof(TableMetadataInfo.DataType))),
                                DataLength    = TranslateUtils.ToInt(AtomUtility.GetDcElementContent(entry.AdditionalElements, nameof(TableMetadataInfo.DataLength))),
                                Taxis         = TranslateUtils.ToInt(AtomUtility.GetDcElementContent(entry.AdditionalElements, nameof(TableMetadataInfo.Taxis))),
                                IsSystem      = TranslateUtils.ToBool(AtomUtility.GetDcElementContent(entry.AdditionalElements, nameof(TableMetadataInfo.IsSystem)))
                            };

                            if (string.IsNullOrEmpty(metaInfo.AttributeName) ||
                                ContentAttribute.AllAttributesLowercase.Contains(metaInfo.AttributeName.ToLower()))
                            {
                                continue;
                            }

                            metadataInfoList.Add(metaInfo);
                        }

                        DataProvider.TableDao.Insert(tableInfo, metadataInfoList);

                        DataProvider.TableDao.CreateDbTable(tableNameToInsert);
                    }
                }

                var tableNameToChange = !string.IsNullOrEmpty(tableNameToInsert) ? tableNameToInsert : tableName;
                //更新发布系统后台内容表及栏目表
                siteInfo.TableName = tableNameToChange;
                DataProvider.SiteDao.Update(siteInfo);
            }

            return(nameValueCollection);
        }
示例#21
0
        public override void Submit_OnClick(object sender, EventArgs e)
        {
            var isChanged = false;

            if (Body.IsQueryExists("TableMetadataID"))
            {
                var tableMetadataId = Body.GetQueryInt("TableMetadataID");

                var info = BaiRongDataProvider.TableMetadataDao.GetTableMetadataInfo(tableMetadataId);
                info.AuxiliaryTableEnName = _tableName;
                info.AttributeName        = AttributeName.Text;
                info.DataType             = EDataTypeUtils.GetEnumType(DataType.SelectedValue);

                var hashtable = new Hashtable
                {
                    [EDataType.DateTime] = new[] { "8", "false" },
                    [EDataType.Integer]  = new[] { "4", "false" },
                    [EDataType.NChar]    = new[] { "50", "true" },
                    [EDataType.NText]    = new[] { "16", "false" },
                    [EDataType.NVarChar] = new[] { "255", "true" }
                };

                var strArr = (string[])hashtable[EDataTypeUtils.GetEnumType(DataType.SelectedValue)];
                if (strArr[1].Equals("false"))
                {
                    DataLength.Text = strArr[0];
                }

                info.DataLength = int.Parse(DataLength.Text);
                if (info.DataType == EDataType.NVarChar || info.DataType == EDataType.NChar)
                {
                    var maxLength = SqlUtils.GetMaxLengthForNVarChar();
                    if (info.DataLength <= 0 || info.DataLength > maxLength)
                    {
                        FailMessage($"字段修改失败,数据长度的值必须位于 1 和 {maxLength} 之间");
                        return;
                    }
                }

                try
                {
                    BaiRongDataProvider.TableMetadataDao.Update(info);

                    Body.AddAdminLog("修改辅助表字段",
                                     $"辅助表:{_tableName},字段名:{info.AttributeName}");

                    isChanged = true;
                }
                catch (Exception ex)
                {
                    FailMessage(ex, ex.Message);
                }
            }
            else
            {
                var tableStyle        = EAuxiliaryTableTypeUtils.GetTableStyle(_tableType);
                var attributeNameList = TableManager.GetAttributeNameList(tableStyle, _tableName, true);
                attributeNameList.AddRange(TableManager.GetHiddenAttributeNameList(tableStyle));
                if (attributeNameList.IndexOf(AttributeName.Text.Trim().ToLower()) != -1)
                {
                    FailMessage("字段添加失败,字段名已存在!");
                }
                else if (!SqlUtils.IsAttributeNameCompliant(AttributeName.Text))
                {
                    FailMessage("字段名不符合系统要求!");
                }
                else
                {
                    var info = new TableMetadataInfo
                    {
                        AuxiliaryTableEnName = _tableName,
                        AttributeName        = AttributeName.Text,
                        DataType             = EDataTypeUtils.GetEnumType(DataType.SelectedValue)
                    };

                    var hashtable = new Hashtable
                    {
                        [EDataType.DateTime] = new[] { "8", "false" },
                        [EDataType.Integer]  = new[] { "4", "false" },
                        [EDataType.NChar]    = new[] { "50", "true" },
                        [EDataType.NText]    = new[] { "16", "false" },
                        [EDataType.NVarChar] = new[] { "255", "true" }
                    };

                    var strArr = (string[])hashtable[EDataTypeUtils.GetEnumType(DataType.SelectedValue)];
                    if (strArr[1].Equals("false"))
                    {
                        DataLength.Text = strArr[0];
                    }

                    info.DataLength = int.Parse(DataLength.Text);
                    if (info.DataType == EDataType.NVarChar || info.DataType == EDataType.NChar)
                    {
                        var maxLength = SqlUtils.GetMaxLengthForNVarChar();
                        if (info.DataLength <= 0 || info.DataLength > maxLength)
                        {
                            FailMessage($"字段修改失败,数据长度的值必须位于 1 和 {maxLength} 之间");
                            return;
                        }
                    }
                    info.IsSystem = false;

                    try
                    {
                        BaiRongDataProvider.TableMetadataDao.Insert(info);

                        Body.AddAdminLog("添加辅助表字段",
                                         $"辅助表:{_tableName},字段名:{info.AttributeName}");

                        isChanged = true;
                    }
                    catch (Exception ex)
                    {
                        FailMessage(ex, ex.Message);
                    }
                }
            }

            if (isChanged)
            {
                PageUtils.CloseModalPage(Page);
            }
        }