private object GetDefaultValue(DataRow row, SqlServerColumnSchema column, TableSchema table) { object defaultValue = null; string defaultValueString = null; if (row.IsNull(ColumnsSchemaNames.ColumnDefault)) { defaultValue = column.AllowNull ? DBNull.Value : _defaultValueMapping[column.SqlDbType]; } else { defaultValueString = GetDefaultValueString((string)row[ColumnsSchemaNames.ColumnDefault]); defaultValue = GetDefaultValueFromString(defaultValueString, column.SqlDbType); } SqlServerParseDefaultValueEventArgs e = new SqlServerParseDefaultValueEventArgs( table.Name, column.Name, column.SqlDbType, defaultValueString, defaultValue); OnParseDefaultValue(e); if (e.Handled) { defaultValue = e.DefaultValue; } if ((defaultValue == null) || (defaultValue == DBNull.Value)) { return(column.AllowNull ? DBNull.Value : _defaultValueMapping[column.SqlDbType]); } 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(SqlServerParseDefaultValueEventArgs e) { ParseDefaultValue?.Invoke(this, e); }