private static void SetFactories(
            IForeignKey foreignKey,
            object dependentKeyValueFactory,
            Func <IDependentsMap> dependentsMapFactory)
        {
            var concreteForeignKey = foreignKey.AsForeignKey();

            concreteForeignKey.DependentKeyValueFactory = dependentKeyValueFactory;
            concreteForeignKey.DependentsMapFactory     = dependentsMapFactory;
        }
 /// <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 static IDependentsMap CreateDependentsMapFactory([NotNull] this IForeignKey foreignKey)
 => foreignKey.AsForeignKey().DependentsMapFactory();
 /// <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 static IDependentKeyValueFactory <TKey> GetDependentKeyValueFactory <TKey>(
     [NotNull] this IForeignKey foreignKey)
 => (IDependentKeyValueFactory <TKey>)foreignKey.AsForeignKey().DependentKeyValueFactory;
 public static IDependentsMap CreateDependentsMapFactory([NotNull] this IForeignKey foreignKey)
 => foreignKey.AsForeignKey().DependentsMapFactory !();    // TODO-NULLABLE: #22031