Galen.Ci.EntityFramework.DbDeploymentManager.LazyLoadInitializerInfo C# (CSharp) Method

LazyLoadInitializerInfo() private method

private LazyLoadInitializerInfo ( ) : ContextTypeInitializerInfo
return ContextTypeInitializerInfo
        private ContextTypeInitializerInfo LazyLoadInitializerInfo()
        {
            var hasInitializer = (m_Config.InitializationConfig != null &&
                                  !string.IsNullOrEmpty(m_Config.InitializationConfig.Type));
            if (!hasInitializer)
            {
                Log.Debug("No initializer specified");
                return null;
            }

            Log.Debug("Loading initializer");

            var initializer = ConstructInitializer();
            if (initializer == null)
            {
                throw new InvalidOperationException($"Invalid initializer type specified: {m_Config.InitializationConfig.Type}");
            }

            var securedInitializer = initializer as ISecureDbWithServiceAccount;
            var isSecuredInitializer = (securedInitializer != null);
            var hasServiceAccount = (m_Config.InitializationConfig.ServiceAccount != null);

            if (!hasServiceAccount && isSecuredInitializer)
            {
                Log.Warning(
                    "The context initializer {initializer} implements ISecureDbWithServiceAccount, but " +
                    "no service account info was configured.", initializer);
            }
            else if (isSecuredInitializer)
            {
                var serviceAccount = m_Config.InitializationConfig.ServiceAccount;
                LogInitializerServiceAccount(initializer, serviceAccount);
                if (m_Config.InitializationConfig.ServiceAccount.AccountType == null)
                {
                    Log.Warning(
                        "The service account type was null for {initializer}. " +
                        "This will result in other service account information being ignored.",
                        initializer);
                }

                securedInitializer.ServiceAccountName = serviceAccount.Name;
                securedInitializer.ServiceAccountDomain = serviceAccount.Domain;
                securedInitializer.ServiceAccountDatabaseUserName = serviceAccount.DatabaseUser;
                securedInitializer.ServiceAccountDatabaseUserPassword = serviceAccount.DatabaseUserPassword;
                securedInitializer.ServiceAccountType = string.IsNullOrEmpty(serviceAccount.AccountType)
                    ? null
                    : (ServiceAccountType?)Enum.Parse(typeof(ServiceAccountType), serviceAccount.AccountType);
            }
            else
            {
                Log.Information("No service account information found.");
            }

            var initializerContextType = initializer.GetType().BaseType
                .GetGenericArguments()
                .Single(t => t.IsSubclassOf(typeof(DbContext)));

            Log.Debug("Initializer found {initializer} for context {contextType}", initializer, initializerContextType);

            return new ContextTypeInitializerInfo(initializerContextType, initializer);
        }