public MySqlOptions() { ConnectionSettings = new MySqlConnectionSettings(); ServerVersion = null; // We explicitly use `utf8mb4` in all instances, where charset based calculations need to be done, but accessing annotations // isn't possible (e.g. in `MySqlTypeMappingSource`). // This is also being used as the universal fallback character set, if no character set was explicitly defined for the model, // which will result in similar behavior as in previous versions and ensure that databases use a decent/the recommended charset // by default, if none was explicitly set. DefaultCharSet = CharSet.Utf8Mb4; // NCHAR and NVARCHAR are prefdefined by MySQL. NationalCharSet = CharSet.Utf8Mb3; // Optimize space and performance for GUID columns. DefaultGuidCollation = "ascii_general_ci"; ReplaceLineBreaksWithCharFunction = true; DefaultDataTypeMappings = new MySqlDefaultDataTypeMappings(); // Throw by default if a schema is being used with any type. SchemaNameTranslator = null; // TODO: Change to `true` for EF Core 5. IndexOptimizedBooleanColumns = false; LimitKeyedOrIndexedStringColumnLength = true; StringComparisonTranslations = false; }
public MySqlOptions() { ConnectionSettings = new MimerConnectionSettings(); ServerVersion = new ServerVersion(null); CharSetBehavior = CharSetBehavior.AppendToAllColumns; // We do not use the MySQL versions's default, but explicitly use `utf8mb4` // if not changed by the user. CharSet = CharSet.Utf8Mb4; // NCHAR and NVARCHAR are prefdefined by MySQL. NationalCharSet = CharSet.Utf8Mb3; ReplaceLineBreaksWithCharFunction = true; DefaultDataTypeMappings = new MySqlDefaultDataTypeMappings(); }
protected virtual MySqlDefaultDataTypeMappings ApplyDefaultDataTypeMappings(MySqlDefaultDataTypeMappings defaultDataTypeMappings, MimerConnectionSettings connectionSettings) { defaultDataTypeMappings ??= DefaultDataTypeMappings; if (connectionSettings.TreatTinyAsBoolean) { defaultDataTypeMappings = defaultDataTypeMappings.WithClrBoolean(MySqlBooleanType.TinyInt1); } else if (defaultDataTypeMappings.ClrBoolean != MySqlBooleanType.Bit1 && defaultDataTypeMappings.ClrBoolean != MySqlBooleanType.None) { defaultDataTypeMappings = defaultDataTypeMappings.WithClrBoolean(MySqlBooleanType.Bit1); } return(defaultDataTypeMappings); }
protected virtual MySqlDefaultDataTypeMappings ApplyDefaultDataTypeMappings(MySqlDefaultDataTypeMappings defaultDataTypeMappings, MySqlConnectionSettings connectionSettings) { defaultDataTypeMappings ??= DefaultDataTypeMappings; if (connectionSettings.TreatTinyAsBoolean || defaultDataTypeMappings.ClrBoolean == MySqlBooleanType.Default) { defaultDataTypeMappings = defaultDataTypeMappings.WithClrBoolean(MySqlBooleanType.TinyInt1); } else if (defaultDataTypeMappings.ClrBoolean != MySqlBooleanType.Bit1 && defaultDataTypeMappings.ClrBoolean != MySqlBooleanType.None) { defaultDataTypeMappings = defaultDataTypeMappings.WithClrBoolean(MySqlBooleanType.Bit1); } if (defaultDataTypeMappings.ClrDateTime == MySqlDateTimeType.Default) { defaultDataTypeMappings = defaultDataTypeMappings.WithClrDateTime( ServerVersion.SupportsDateTime6 ? MySqlDateTimeType.DateTime6 : MySqlDateTimeType.DateTime); } if (defaultDataTypeMappings.ClrDateTimeOffset == MySqlDateTimeType.Default) { defaultDataTypeMappings = defaultDataTypeMappings.WithClrDateTimeOffset( ServerVersion.SupportsDateTime6 ? MySqlDateTimeType.DateTime6 : MySqlDateTimeType.DateTime); } if (defaultDataTypeMappings.ClrTimeSpan == MySqlTimeSpanType.Default) { defaultDataTypeMappings = defaultDataTypeMappings.WithClrTimeSpan( ServerVersion.SupportsDateTime6 ? MySqlTimeSpanType.Time6 : MySqlTimeSpanType.Time); } return(defaultDataTypeMappings); }
protected virtual MySqlDefaultDataTypeMappings ApplyDefaultDataTypeMappings(MySqlDefaultDataTypeMappings defaultDataTypeMappings, MySqlConnectionSettings connectionSettings) { defaultDataTypeMappings ??= DefaultDataTypeMappings; // Explicitly set MySqlDefaultDataTypeMappings values take precedence over connection string options. if (connectionSettings.TreatTinyAsBoolean.HasValue && defaultDataTypeMappings.ClrBoolean == MySqlBooleanType.Default) { defaultDataTypeMappings = defaultDataTypeMappings.WithClrBoolean( connectionSettings.TreatTinyAsBoolean.Value ? MySqlBooleanType.TinyInt1 : MySqlBooleanType.Bit1); } if (defaultDataTypeMappings.ClrDateTime == MySqlDateTimeType.Default) { defaultDataTypeMappings = defaultDataTypeMappings.WithClrDateTime( ServerVersion.Supports.DateTime6 ? MySqlDateTimeType.DateTime6 : MySqlDateTimeType.DateTime); } if (defaultDataTypeMappings.ClrDateTimeOffset == MySqlDateTimeType.Default) { defaultDataTypeMappings = defaultDataTypeMappings.WithClrDateTimeOffset( ServerVersion.Supports.DateTime6 ? MySqlDateTimeType.DateTime6 : MySqlDateTimeType.DateTime); } if (defaultDataTypeMappings.ClrTimeSpan == MySqlTimeSpanType.Default) { defaultDataTypeMappings = defaultDataTypeMappings.WithClrTimeSpan( ServerVersion.Supports.DateTime6 ? MySqlTimeSpanType.Time6 : MySqlTimeSpanType.Time); } return(defaultDataTypeMappings); }
public MySqlOptions() { ConnectionSettings = new MySqlConnectionSettings(); ServerVersion = new ServerVersion(null); CharSetBehavior = CharSetBehavior.AppendToAllColumns; // We do not use the MySQL versions's default, but explicitly use `utf8mb4` // if not changed by the user. CharSet = CharSet.Utf8Mb4; // NCHAR and NVARCHAR are prefdefined by MySQL. NationalCharSet = CharSet.Utf8Mb3; ReplaceLineBreaksWithCharFunction = true; DefaultDataTypeMappings = new MySqlDefaultDataTypeMappings(); // Throw by default if a schema is being used with any type. SchemaNameTranslator = null; // TODO: Change to `true` for EF Core 5. IndexOptimizedBooleanColumns = false; }