Exemplo n.º 1
0
        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));
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 6
0
        /// <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));
        }
Exemplo n.º 7
0
        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);
        }