Пример #1
0
        private void ValidateDiscriminatorValues(IEntityType rootEntityType)
        {
            var discriminatorValues = new Dictionary <object, IEntityType>();
            var derivedTypes        = rootEntityType.GetDerivedTypesInclusive().ToList();

            if (derivedTypes.Count == 1)
            {
                return;
            }

            foreach (var derivedType in derivedTypes)
            {
                if (derivedType.ClrType?.IsInstantiable() != true)
                {
                    continue;
                }

                ValidateDiscriminator(derivedType);

                var         discriminatorValue = RelationalExtensions.For(derivedType).DiscriminatorValue;
                IEntityType duplicateEntityType;
                if (discriminatorValues.TryGetValue(discriminatorValue, out duplicateEntityType))
                {
                    ShowError(RelationalStrings.DuplicateDiscriminatorValue(
                                  derivedType.DisplayName(), discriminatorValue, duplicateEntityType.DisplayName()));
                }
                discriminatorValues[discriminatorValue] = derivedType;
            }
        }
Пример #2
0
        private void ValidateDiscriminatorValues(IEntityType rootEntityType, IReadOnlyList <IEntityType> derivedTypes)
        {
            var discriminatorValues = new Dictionary <object, IEntityType>();

            if (rootEntityType.ClrType?.IsInstantiable() == true)
            {
                ValidateDiscriminator(rootEntityType);
                discriminatorValues[_relationalExtensions.For(rootEntityType).DiscriminatorValue] = rootEntityType;
            }

            foreach (var derivedType in derivedTypes)
            {
                if (derivedType.ClrType?.IsInstantiable() != true)
                {
                    continue;
                }

                ValidateDiscriminator(derivedType);

                var         discriminatorValue = _relationalExtensions.For(derivedType).DiscriminatorValue;
                IEntityType duplicateEntityType;
                if (discriminatorValues.TryGetValue(discriminatorValue, out duplicateEntityType))
                {
                    ShowError(RelationalStrings.DuplicateDiscriminatorValue(
                                  derivedType.DisplayName(), discriminatorValue, duplicateEntityType.DisplayName()));
                }
                discriminatorValues[discriminatorValue] = derivedType;
            }
        }