/// <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> /// Sets the <see cref="CharSet"/> in use by the property's column. /// </summary> /// <param name="property">The property to set the <see cref="CharSet"/> for.</param> /// <param name="charSet">The <see cref="CharSet"/> used by the property's column.</param> public static void SetCharSet([NotNull] this IMutableProperty property, CharSet charSet) { if (charSet != null && !property.IsUnicode().HasValue) { property.SetIsUnicode(charSet.IsUnicode); } property.SetOrRemoveAnnotation(MySqlAnnotationNames.CharSet, charSet); }