SQL type 'datetimeoffset' is not registered
作者:互联网
System.NotSupportedException: [DataTypeManager.GetFieldType]: SQL type 'datetimeoffset' is not registered, register the type with method RegisterDataTypes(...)
at CMS.DataEngine.DataTypeManager.GetFieldType(String sqlType, Int32 size, Boolean throwException)
at CMS.DataEngine.FieldBase`1.LoadFromTableData(DataRow row, Boolean isPrimary, Boolean isSystem)
at CMS.FormEngine.FormFieldInfo.LoadFromTableData(DataRow row, Boolean isPrimary, Boolean isSystem)
at CMS.DataEngine.DataDefinition.LoadFromDataStructure(String tableName, TableManager manager, Boolean isSystem)
at CMS.DataEngine.TableManager.GetDatabaseFields(String tableName)
at CMS.DataEngine.TableManager.GetOldFields(String tableName, String definition, Boolean loadOldDefinition)
at CMS.DataEngine.TableManager.UpdateTableByDefinition(UpdateTableParameters parameters)
at CMS.DataEngine.DataClassInfoProvider.EnsureDatabaseStructure(DataClassInfo classInfo, Boolean updateSystemFields)
at CMS.DataEngine.DataClassInfoProvider.SetDataClassInfoInternal(DataClassInfo infoObj)
at CMS.DataEngine.DataClassInfoProviderBase`1.SetDataClassInfo(DataClassInfo infoObj)
at CMS.DataEngine.DataClassInfo.SetObject()
at CMS.DataEngine.BaseInfo.Update()
// CMS.DataEngine.DataTypeManager /// <summary> /// Returns form field data type from database column data type. /// Some sql types map to multiple field types that differ by size, e.g. nvarchar has more field data types that differ by size. /// Specify size to get more accurate result. By default max size for given sql type is used. /// </summary> /// <param name="sqlType">Database column data type</param> /// <param name="size">Specify the size of sql type to get accurate result</param> /// <param name="throwException">Indicates if exception should be thrown for unsupported SQL data type</param> // Token: 0x06000903 RID: 2307 RVA: 0x0001BC38 File Offset: 0x0001AC38 public static string GetFieldType(string sqlType, int size = -1, bool throwException = false) { DataType dataType = DataTypeManager.GetDataType(TypeEnum.SQL, sqlType); if (dataType == null) { if (throwException) { throw new NotSupportedException("[DataTypeManager.GetFieldType]: SQL type '" + sqlType + "' is not registered, register the type with method RegisterDataTypes(...)"); } return ""; } else { if (dataType.FieldType == "text" && size == -1) { return "longtext"; } return dataType.FieldType; } }
// CMS.DataEngine.DataTypeManager /// <summary> /// Gets the data type settings by its SQL type /// </summary> /// <param name="typeEnum"></param> /// <param name="typeValue">SQL type</param> // Token: 0x06000909 RID: 2313 RVA: 0x0001BDDC File Offset: 0x0001ADDC public static DataType GetDataType(TypeEnum typeEnum, string typeValue) { DataType dataType = null; switch (typeEnum) { case TypeEnum.SQL: dataType = DataTypeManager.DataTypesBySqlType[typeValue]; if (dataType == null) { int num = typeValue.IndexOf("("); if (num > 0) { typeValue = typeValue.Substring(0, num); } dataType = DataTypeManager.DataTypesBySqlType[typeValue]; } break; case TypeEnum.Field: dataType = DataTypeManager.DataTypesByFieldType[typeValue]; break; case TypeEnum.Schema: dataType = DataTypeManager.DataTypesBySchemaType[typeValue]; break; } return dataType; }
// CMS.DataEngine.DataTypeManager /// <summary> /// Registers the given data type to the system /// </summary> // Token: 0x060008FB RID: 2299 RVA: 0x0001B1A5 File Offset: 0x0001A1A5 public static void RegisterDataTypes(params DataType[] types) { DataTypeManager.EnsureSystemTypes(); DataTypeManager.RegisterDataTypesInternal(false, types); }
标签:datetimeoffset,DataEngine,dataType,type,registered,SQL,DataTypeManager,CMS 来源: https://www.cnblogs.com/chucklu/p/14931494.html