public virtual InternalKeyBuilder Key([CanBeNull] IReadOnlyList <Property> properties, ConfigurationSource configurationSource)
        {
            if (properties == null ||
                !properties.Any())
            {
                return(null);
            }

            foreach (var property in properties)
            {
                _propertyBuilders.UpdateConfigurationSource(property, configurationSource);
            }

            return(_keyBuilders.GetOrAdd(
                       () => Metadata.FindKey(properties),
                       () => Metadata.AddKey(properties),
                       key => new InternalKeyBuilder(key, ModelBuilder),
                       ModelBuilder.ConventionDispatcher.OnKeyAdded,
                       configurationSource));
        }