public void Can_get_and_set_model_annotations() { var annotatable = new Annotatable(); Assert.Empty(annotatable.GetAnnotations()); var annotation = annotatable.AddAnnotation("Foo", "Bar"); Assert.NotNull(annotation); Assert.Same(annotation, annotatable.FindAnnotation("Foo")); Assert.Same(annotation, annotatable.GetAnnotation("Foo")); Assert.Null(annotatable["foo"]); Assert.Null(annotatable.FindAnnotation("foo")); annotatable["Foo"] = "horse"; Assert.Equal("horse", annotatable["Foo"]); annotatable["Foo"] = null; Assert.Null(annotatable["Foo"]); Assert.Empty(annotatable.GetAnnotations()); Assert.Equal( CoreStrings.AnnotationNotFound("Foo", "Microsoft.EntityFrameworkCore.Infrastructure.Annotatable"), Assert.Throws <InvalidOperationException>(() => annotatable.GetAnnotation("Foo")).Message); }
/// <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> internal static IAnnotation GetAnnotation(IReadOnlyAnnotatable annotatable, string annotationName) { Check.NotEmpty(annotationName, nameof(annotationName)); var annotation = annotatable.FindAnnotation(annotationName); if (annotation == null) { throw new InvalidOperationException(CoreStrings.AnnotationNotFound(annotationName, annotatable.ToString())); } return annotation; }
public virtual Annotation GetAnnotation(string annotationName) { Check.NotEmpty(annotationName, nameof(annotationName)); var annotation = FindAnnotation(annotationName); if (annotation == null) { throw new InvalidOperationException(CoreStrings.AnnotationNotFound(annotationName)); } return(annotation); }
public static IAnnotation GetAnnotation([NotNull] this IAnnotatable annotatable, [NotNull] string annotationName) { Check.NotNull(annotatable, nameof(annotatable)); Check.NotEmpty(annotationName, nameof(annotationName)); var annotation = annotatable.FindAnnotation(annotationName); if (annotation == null) { throw new InvalidOperationException(CoreStrings.AnnotationNotFound(annotationName)); } return(annotation); }