示例#1
0
        public bool CreateDataBaseTable(SPSite site, string tableName, SPFieldCollection fields)
        {
            string dataBaseTableName = this.Adapter.BuildTableName(tableName);
            CacheTableStructXml cacheTableStructXml = new CacheTableStructXml {
                TableName = dataBaseTableName
            };

            foreach (SPField field in fields)
            {
                if (field.Hidden && field.Id != SPBuiltInFieldId.ID &&
                    this.Adapter.IncludedFields.All(f => f != field.InternalName))
                {
                    continue;
                }

                string  columnType = this.Adapter.GetDataBaseType(field.Type);
                Columns column     = new Columns
                {
                    ColumnName =
                        field.Id == SPBuiltInFieldId.ID
                            ? Constants.ColumnSpPrefix + field.InternalName
                            : field.InternalName,
                    ColumnType = columnType
                };
                cacheTableStructXml.Columns.Add(column);
            }

            ArchiveCacheCRUD syncCrud = new ArchiveCacheCRUD(site);
            ErrorCode        result   = syncCrud.CreateOrUpdateTable(cacheTableStructXml);

            return(result == ErrorCode.NoError);
        }
示例#2
0
        public bool UpdateDataTableColumns(SPList spList, string fieldXml, bool isDeleted)
        {
            string tableNameSetting = SettingsProvider.Instance(spList.ParentWeb).TableName(spList);
            string tableName        = this.Adapter.BuildTableName(tableNameSetting);

            if (string.IsNullOrWhiteSpace(tableName))
            {
                //Logger.WriteError("tableName is null, feature activaiting?", "UpdateDataTableColumns(SPList spList, string fieldXml, bool isDeleted)");
                return(true);
            }

            CacheTableStructXml cacheTableStructXml = new CacheTableStructXml {
                TableName = tableName
            };

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(fieldXml);
            const string fXmlTypeName    = "Type";
            const string xStaticNameName = "StaticName";

            SPFieldType spFieldType;
            XmlElement  root = doc.DocumentElement;

            Enum.TryParse(root.Attributes[fXmlTypeName].Value, true, out spFieldType);
            string internalName = root.Attributes[xStaticNameName].Value;

            string  columnType = this.Adapter.GetDataBaseType(spFieldType);
            Columns column     = new Columns
            {
                ColumnName      = internalName,
                ColumnType      = columnType,
                ColumnIsDeleted = isDeleted
            };

            cacheTableStructXml.Columns.Add(column);

            ArchiveCacheCRUD syncCrud = new ArchiveCacheCRUD(spList.ParentWeb.Site);
            ErrorCode        result   = syncCrud.CreateOrUpdateTable(cacheTableStructXml);

            return(result == ErrorCode.NoError);
        }