/// <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); } }
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) { }
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) { }
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;
/// <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; }