public virtual InternalEntityTypeBuilder Apply(InternalEntityTypeBuilder entityTypeBuilder)
        {
            Check.NotNull(entityTypeBuilder, nameof(entityTypeBuilder));

            var properties = entityTypeBuilder.Metadata.ClrType?.GetRuntimeProperties();
            if (properties == null)
            {
                return entityTypeBuilder;
            }

            foreach (var property in properties)
            {
                var attributes = property.GetCustomAttributes<NotMappedAttribute>(inherit: true);
                if (attributes.Any())
                {
                    entityTypeBuilder.Ignore(property.Name, ConfigurationSource.DataAnnotation);
                }
            }

            return entityTypeBuilder;
        }
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public virtual InternalEntityTypeBuilder Apply(InternalEntityTypeBuilder entityTypeBuilder)
        {
            Check.NotNull(entityTypeBuilder, nameof(entityTypeBuilder));

            var entityType = entityTypeBuilder.Metadata;

            if (!entityType.HasClrType())
            {
                return(entityTypeBuilder);
            }

            var members = entityType.GetRuntimeProperties().Values.Cast <MemberInfo>()
                          .Concat(entityType.GetRuntimeFields().Values);

            foreach (var member in members)
            {
                if (Attribute.IsDefined(member, typeof(NotMappedAttribute), inherit: true))
                {
                    entityTypeBuilder.Ignore(member.Name, ConfigurationSource.DataAnnotation);
                }
            }

            return(entityTypeBuilder);
        }
        public void Can_ignore_property_that_is_part_of_lower_source_index()
        {
            var modelBuilder = CreateModelBuilder();
            var entityType = modelBuilder.Metadata.AddEntityType(typeof(Order));
            var entityBuilder = new InternalEntityTypeBuilder(entityType, modelBuilder);

            Assert.NotNull(entityBuilder.Index(new[] { Order.IdProperty, Order.CustomerIdProperty }, ConfigurationSource.DataAnnotation));

            Assert.True(entityBuilder.Ignore(Order.CustomerIdProperty.Name, ConfigurationSource.Explicit));

            Assert.Empty(entityBuilder.Metadata.Properties.Where(p => p.Name == Order.CustomerIdProperty.Name));
            Assert.Empty(entityBuilder.Metadata.Indexes);
        }