text: // Copyright (c) .NET Foundation. All rights reserved.
  // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
  
  using System;
  using JetBrains.Annotations;
  using Microsoft.EntityFrameworkCore.Infrastructure;
  using Microsoft.Extensions.DependencyInjection;
  
  namespace Microsoft.EntityFrameworkCore.Internal
  {
      /// <summary>
      ///     <para>
      ///         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.
      ///     </para>
      ///     <para>
      ///         The service lifetime is <see cref="ServiceLifetime.Singleton" />. This means a single instance
      ///         is used by many <see cref="DbContext" /> instances. The implementation must be thread-safe.
      ///         This service cannot depend on services registered as <see cref="ServiceLifetime.Scoped" />.
      ///     </para>
      /// </summary>
      public interface ISingletonOptionsInitializer
      {
          /// <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>
          void EnsureInitialized(
              [NotNull] IServiceProvider serviceProvider,
              [NotNull] IDbContextOptions options);
      }
  }
  