Esempio n. 1
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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;
        }