private DiscriminatorBuilder HasValue( InternalEntityTypeBuilder entityTypeBuilder, object value, ConfigurationSource configurationSource) { if (entityTypeBuilder == null) { return(null); } var baseEntityTypeBuilder = EntityTypeBuilder; if (!baseEntityTypeBuilder.Metadata.IsAssignableFrom(entityTypeBuilder.Metadata) && entityTypeBuilder.HasBaseType(baseEntityTypeBuilder.Metadata, configurationSource) == null) { throw new InvalidOperationException( CoreStrings.DiscriminatorEntityTypeNotDerived( entityTypeBuilder.Metadata.DisplayName(), baseEntityTypeBuilder.Metadata.DisplayName())); } if (configurationSource == ConfigurationSource.Explicit) { entityTypeBuilder.Metadata.SetDiscriminatorValue(value); } else { if (!entityTypeBuilder.CanSetAnnotation(CoreAnnotationNames.DiscriminatorValue, value, configurationSource)) { return(null); } entityTypeBuilder.Metadata.SetDiscriminatorValue(value, configurationSource == ConfigurationSource.DataAnnotation); } return(this); }
/// <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) { var entityType = entityTypeBuilder.Metadata; var clrType = entityType.ClrType; if (clrType == null) { return entityTypeBuilder; } var baseEntityType = FindClosestBaseType(entityType); return entityTypeBuilder.HasBaseType(baseEntityType, ConfigurationSource.Convention); }
public virtual InternalEntityTypeBuilder Apply(InternalEntityTypeBuilder entityTypeBuilder) { var entityType = entityTypeBuilder.Metadata; var clrType = entityType.ClrType; if (clrType == null) { return(entityTypeBuilder); } var baseEntityType = FindClosestBaseType(entityType); return(entityTypeBuilder.HasBaseType(baseEntityType, ConfigurationSource.Convention)); }
private DiscriminatorBuilder HasValue([NotNull] InternalEntityTypeBuilder entityTypeBuilder, [CanBeNull] object value) { var baseEntityTypeBuilder = EntityTypeBuilder; if (!baseEntityTypeBuilder.Metadata.IsAssignableFrom(entityTypeBuilder.Metadata) && (entityTypeBuilder.HasBaseType(baseEntityTypeBuilder.Metadata, AnnotationsBuilder.ConfigurationSource) == null)) { throw new InvalidOperationException(RelationalStrings.DiscriminatorEntityTypeNotDerived( entityTypeBuilder.Metadata.DisplayName(), baseEntityTypeBuilder.Metadata.DisplayName())); } return(GetRelationalEntityTypeBuilderAnnotations(entityTypeBuilder).HasDiscriminatorValue(value) ? this : null); }
/// <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) { var entityType = entityTypeBuilder.Metadata; var clrType = entityType.ClrType; if (clrType == null || entityType.HasDefiningNavigation() || entityType.FindDeclaredOwnership() != null) { return(entityTypeBuilder); } var baseEntityType = FindClosestBaseType(entityType); return(entityTypeBuilder.HasBaseType(baseEntityType, ConfigurationSource.Convention)); }
/// <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 InternalEntityTypeBuilder Apply(InternalEntityTypeBuilder entityTypeBuilder) { var entityType = entityTypeBuilder.Metadata; var clrType = entityType.ClrType; if (clrType == null || entityType.HasDefiningNavigation() || entityType.FindDeclaredOwnership() != null || entityType.Model.ShouldBeOwnedType(entityType.Model.GetDisplayName(clrType))) { return(entityTypeBuilder); } var baseEntityType = FindClosestBaseType(entityType); return(baseEntityType?.HasDefiningNavigation() != false ? entityTypeBuilder : entityTypeBuilder.HasBaseType(baseEntityType, ConfigurationSource.Convention)); }
private DiscriminatorBuilder HasValue([NotNull] InternalEntityTypeBuilder entityTypeBuilder, [CanBeNull] object value) { var baseEntityTypeBuilder = AnnotationsBuilder.EntityTypeBuilder; if (!baseEntityTypeBuilder.Metadata.IsAssignableFrom(entityTypeBuilder.Metadata) && entityTypeBuilder.HasBaseType(baseEntityTypeBuilder.Metadata, AnnotationsBuilder.Annotations.ConfigurationSource) == null) { throw new InvalidOperationException(RelationalStrings.DiscriminatorEntityTypeNotDerived( entityTypeBuilder.Metadata.DisplayName(), baseEntityTypeBuilder.Metadata.DisplayName())); } var annotationsBuilder = baseEntityTypeBuilder == entityTypeBuilder ? AnnotationsBuilder : new RelationalEntityTypeBuilderAnnotations( entityTypeBuilder, AnnotationsBuilder.Annotations.ConfigurationSource, AnnotationsBuilder.Annotations.ProviderPrefix); return(annotationsBuilder.DiscriminatorValue(value) ? this : null); }