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