public virtual MySqlJsonOptionsExtension WithJsonChangeTrackingOptions(MySqlJsonChangeTrackingOptions options) { var clone = Clone(); clone.JsonChangeTrackingOptions = options; return(clone); }
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 }); }
public static ValueComparer Create(Type t, MySqlJsonChangeTrackingOptions options = MySqlJsonChangeTrackingOptions.None) => (ValueComparer)Activator.CreateInstance( typeof(MySqlJsonMicrosoftValueComparer <>).MakeGenericType(t), options);