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