/// <summary>
        /// Registers the dependencies
        /// </summary>
        public void RegisterDependencies(IServiceRegister serviceRegister)
        {
            if (serviceRegister is null)
            {
                throw new ArgumentNullException(nameof(serviceRegister));
            }

            StaticLogger.Log($"Penguin.Persistence.DependencyInjection: {Assembly.GetExecutingAssembly().GetName().Version}", StaticLogger.LoggingLevel.Call);

            //if (!DependencyEngine.IsRegistered<PersistenceConnectionInfo>())
            //{
            //Wonky ass logic to support old EF connection strings from web.config.
            //Most of this can be removed when CE isn't needed.
            serviceRegister.Register((IServiceProvider ServiceProvider) =>
            {
                if (!(ServiceProvider.GetService(typeof(IProvideConfigurations)) is IProvideConfigurations Configuration))
                {
                    throw new NullReferenceException("IProvideConfigurations must be registered before building database connection");
                }

                string ConnectionString = Configuration.GetConnectionString("DefaultConnectionString");

                if (ConnectionString is null)
                {
                    string error = $"Can not find connection string {Strings.CONNECTION_STRING_NAME} in registered configuration provider";

                    try
                    {
                        throw new DatabaseNotConfiguredException(error,
                                                                 new MissingConfigurationException(Strings.CONNECTION_STRING_NAME, error
                                                                                                   ));
                    }     //Notify dev if possible
                    catch (Exception)
                    {
                        return(new PersistenceConnectionInfo("", ""));
                    }
                }

                string Provider = "System.Data.SqlClient";

                if (ConnectionString.StartsWith("name="))
                {
                    ConnectionString = ConnectionString.Replace("name=", "");
                    ConnectionString = Configuration.GetConnectionString(ConnectionString);
                }

                PersistenceConnectionInfo connectionInfo = new PersistenceConnectionInfo(ConnectionString, Provider);

                if (connectionInfo.ProviderType == ProviderType.SQLCE)
                {
                    connectionInfo.ProviderName = "System.Data.SqlServerCe.4.0";
                }

                return(connectionInfo);
            }, ServiceLifetime.Singleton);
        }
        /// <summary>
        /// Creates a new instance of this Email repository
        /// </summary>
        /// <param name="connectionInfo">Optional database connection info representing the database the emails are stored in. If provided, allows the repository to use ADO to update sent state as failsafe</param>
        /// <param name="configurationService">A Configuration Service instance used to extract values for the email system</param>
        /// <param name="dbContext">The Persistence context used to store EmailMessages</param>
        /// <param name="messageBus">An optional message bus used to send email message events</param>
        public EmailRepository(PersistenceConnectionInfo connectionInfo, IProvideConfigurations configurationService, IPersistenceContext <EmailMessage> dbContext, MessageBus messageBus = null) : base(dbContext, messageBus)
        {
            this.ConfigurationService = configurationService;
            PersistenceConnectionInfo = connectionInfo;

            if (connectionInfo != null)
            {
                DatabaseInstance = new DatabaseInstance(connectionInfo.ConnectionString);
            }
        }
Пример #3
0
 public OptionalToRequiredAttributeBuilder(PropertyInfo m, PersistenceConnectionInfo persistenceConnectionInfo) : base(m, persistenceConnectionInfo)
 {
 }
 public StringLengthBuilder(PropertyInfo m, PersistenceConnectionInfo persistenceConnectionInfo) : base(m, persistenceConnectionInfo)
 {
 }
 public ManyToManyAttributeBuilder(PropertyInfo m, PersistenceConnectionInfo persistenceConnectionInfo) : base(m, persistenceConnectionInfo)
 {
 }
Пример #6
0
 public PropertyBuilder(PropertyInfo m, PersistenceConnectionInfo persistenceConnectionInfo) : base(m, persistenceConnectionInfo)
 {
 }
 public ComplexTypeBuilder(Type m, PersistenceConnectionInfo persistenceConnectionInfo) : base(m, persistenceConnectionInfo)
 {
 }
 /// <summary>
 /// Constructs a new instance of this wrapping class
 /// </summary>
 /// <param name="connectionInfo">The connection info to use with the DynamicContext</param>
 /// <param name="preventDispose">Prevents the underlying context from being dispose when Dispose() is called (in case there are lazy loaded entities)</param>
 public SingleUseDbContext(PersistenceConnectionInfo connectionInfo, bool preventDispose = false)
 {
     this.CurrentContext = new DynamicContext(connectionInfo);
     this.PreventDispose = preventDispose;
 }
 public TableBuilder(Type m, PersistenceConnectionInfo persistenceConnectionInfo) : base(m, persistenceConnectionInfo)
 {
 }
Пример #10
0
 public HasOptionalAttributeBuilder(PropertyInfo m, PersistenceConnectionInfo persistenceConnectionInfo) : base(m, persistenceConnectionInfo)
 {
 }
 public NotMappedBuilder(PropertyInfo m, PersistenceConnectionInfo persistenceConnectionInfo) : base(GetBaseProperty(m), persistenceConnectionInfo)
 {
 }
 public StartupMessageHandler(IProvideConfigurations configurationProvider, PersistenceConnectionInfo connectionInfo)
 {
     this.ConfigurationProvider = configurationProvider;
     this.ConnectionInfo        = connectionInfo;
 }
 public AttributeBuilder(TMember m, PersistenceConnectionInfo persistenceConnectionInfo)
 {
     this.Attribute = m.GetCustomAttribute <TAttribute>();
     this.PersistenceConnectionInfo = persistenceConnectionInfo;
     this.Member = m;
 }
 /// <summary>
 /// Creates a new instance of this dynamic context using the provided connection info
 /// </summary>
 /// <param name="connectionInfo">The connection info for the database</param>
 public DynamicContext(PersistenceConnectionInfo connectionInfo) : base(GetDbConnection(connectionInfo ?? throw new ArgumentNullException(nameof(connectionInfo))), true)
        private static DbConnection GetDbConnection(PersistenceConnectionInfo connectionInfo) =>
#if NET48
        connectionInfo?.ProviderType == ProviderType.SQLCE ? new System.Data.SqlServerCe.SqlCeConnection(connectionInfo.ConnectionString) : new SqlConnection(connectionInfo.ConnectionString) as DbConnection;
Пример #16
0
 /// <summary>
 /// Constructs a new instance of the migrator using the provided connection string
 /// </summary>
 /// <param name="connectionInfo"></param>
 public EFContextMigrator(PersistenceConnectionInfo connectionInfo)
 {
     this.PersistenceConnectionInfo = connectionInfo;
 }