private object GetDefaultValue(DataRow row, MsAccessColumnSchema column, TableSchema table) { object defaultValue = null; string defaultValueString = null; if (row.IsNull(ColumnsSchemaNames.ColumnDefault)) { defaultValue = column.AllowNull ? DBNull.Value : _defaultValueMapping[column.OleDbType]; } else { defaultValueString = GetDefaultValueString(row.Field <string>(ColumnsSchemaNames.ColumnDefault)); defaultValue = GetDefaultValueFromString(defaultValueString, column.OleDbType); } MsAccessParseDefaultValueEventArgs e = new MsAccessParseDefaultValueEventArgs( table.Name, column.Name, column.OleDbType, defaultValueString, defaultValue); OnParseDefaultValue(e); if (e.Handled) { defaultValue = e.DefaultValue; } if ((defaultValue == null) || (defaultValue == DBNull.Value)) { return(column.AllowNull ? DBNull.Value : _defaultValueMapping[column.OleDbType]); } return(defaultValue); }
/// <summary> /// Raises the <see cref="ParseDefaultValue"/> event with arguments <paramref name="e"/>. /// </summary> /// <param name="e">Arguments for the event.</param> protected virtual void OnParseDefaultValue(MsAccessParseDefaultValueEventArgs e) { ParseDefaultValue?.Invoke(this, e); }