/// <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; } } }