Exemple #1
0
        public virtual MySqlJsonOptionsExtension WithJsonChangeTrackingOptions(MySqlJsonChangeTrackingOptions options)
        {
            var clone = Clone();

            clone.JsonChangeTrackingOptions = options;
            return(clone);
        }
Exemple #2
0
        public static MySqlDbContextOptionsBuilder UseMicrosoftJson(
            [NotNull] this MySqlDbContextOptionsBuilder optionsBuilder, MySqlJsonChangeTrackingOptions options)
        {
            Check.NotNull(optionsBuilder, nameof(optionsBuilder));

            var coreOptionsBuilder = ((IRelationalDbContextOptionsBuilderInfrastructure)optionsBuilder).OptionsBuilder;

            var extension = (coreOptionsBuilder.Options.FindExtension <MySqlJsonMicrosoftOptionsExtension>() ??
                             new MySqlJsonMicrosoftOptionsExtension())
                            .WithJsonChangeTrackingOptions(options);

            ((IDbContextOptionsBuilderInfrastructure)coreOptionsBuilder).AddOrUpdateExtension(extension);

            return(optionsBuilder);
        }
            private void SetGlobalJsonChangeTrackingOptions(
                DbContextOptionsBuilder optionsBuilder,
                MySqlJsonChangeTrackingOptions jsonChangeTrackingOptions)
            {
                var mySqlJsonOptions = (MySqlJsonOptionsExtension)optionsBuilder.Options.Extensions.Last(e => e is MySqlJsonOptionsExtension);

                mySqlJsonOptions = mySqlJsonOptions.WithJsonChangeTrackingOptions(jsonChangeTrackingOptions);

                var addOrUpdateExtensionMethod = optionsBuilder.GetType()
                                                 .GetInterfaceMap(typeof(IDbContextOptionsBuilderInfrastructure))
                                                 .TargetMethods.First(
                    m => m.IsGenericMethod &&
                    m.ReturnType == typeof(void) &&
                    m.GetParameters().Length == 1 &&
                    m.GetParameters()[0].ParameterType.IsGenericParameter)
                                                 .MakeGenericMethod(mySqlJsonOptions.GetType());

                addOrUpdateExtensionMethod.Invoke(optionsBuilder, new object[] { mySqlJsonOptions });
            }
Exemple #4
0
 public static ValueComparer Create(Type t, MySqlJsonChangeTrackingOptions options = MySqlJsonChangeTrackingOptions.None)
 => (ValueComparer)Activator.CreateInstance(
     typeof(MySqlJsonMicrosoftValueComparer <>).MakeGenericType(t),
     options);