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