/// <summary> /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// </summary> public virtual void Apply(IMutableProperty property) { foreach (var annotation in GetAnnotations()) { switch (annotation.Name) { case CoreAnnotationNames.MaxLength: property.SetMaxLength((int?)annotation.Value); break; case CoreAnnotationNames.Unicode: property.SetIsUnicode((bool?)annotation.Value); break; case CoreAnnotationNames.Precision: property.SetPrecision((int?)annotation.Value); break; case CoreAnnotationNames.Scale: property.SetScale((int?)annotation.Value); break; case CoreAnnotationNames.ProviderClrType: property.SetProviderClrType((Type?)annotation.Value); break; case CoreAnnotationNames.ValueConverterType: if (ClrType.UnwrapNullableType() == property.ClrType.UnwrapNullableType()) { property.SetValueConverter((Type?)annotation.Value); } break; case CoreAnnotationNames.ValueComparerType: if (ClrType.UnwrapNullableType() == property.ClrType.UnwrapNullableType()) { property.SetValueComparer((Type?)annotation.Value); } break; default: if (!CoreAnnotationNames.AllNames.Contains(annotation.Name)) { property.SetAnnotation(annotation.Name, annotation.Value); } break; } } }
/// <summary> /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// </summary> public static void SetJsonChangeTrackingOptions([NotNull] this IMutableProperty property, MySqlJsonChangeTrackingOptions?options) { Check.NotNull(property, nameof(property)); if (options == null) { // Use globally configured options for this context. // This can always be used to get back to the default implementation and options. property.SetValueComparer(null); return; } var valueComparer = property.GetValueComparer() ?? property.FindTypeMapping()?.Comparer; property.SetValueComparer( valueComparer is IMySqlJsonValueComparer mySqlJsonValueComparer ? mySqlJsonValueComparer.Clone(options.Value) : MySqlJsonMicrosoftValueComparer.Create(property.ClrType, options.Value)); }
public static void SetStructuralValueComparer([NotNull] this IMutableProperty property, [CanBeNull] ValueComparer?comparer) => property.SetValueComparer(comparer);
public static void SetStructuralValueComparer(this IMutableProperty property, ValueComparer?comparer) => property.SetValueComparer(comparer);