private IDbConnection CreateConnection(string connectionName) { var connString = EnableMasterSlave ? ConnectionConfigureManager.GetConnectionString(connectionName, ReadOnly) : Configuration.GetConnectionString(connectionName); if (string.IsNullOrWhiteSpace(connString)) { throw new ArgumentNullException(nameof(connString), "The config of " + connectionName + " cannot be null."); } var conn = new TDbConnection(); if (conn == null) { throw new ArgumentNullException(nameof(IDbConnection), "Failed to create database connection."); } conn.ConnectionString = connString; conn.Open(); return(DbMiniProfiler == null ? conn : DbMiniProfiler.CreateConnection(conn)); }
protected BaseDapper(IServiceProvider serviceProvider, string connectionName = "DefaultConnection", bool enableMasterSlave = false, bool readOnly = false) { if (!enableMasterSlave && readOnly) { throw new InvalidOperationException($"The connection with the name '{connectionName}' does not enable the master-slave"); } EnableMasterSlave = enableMasterSlave; ReadOnly = readOnly; Configuration = serviceProvider.GetRequiredService <IConfiguration>(); Cache = serviceProvider.GetService <ICacheProvider>(); CacheConfiguration = serviceProvider.GetService <CacheConfiguration>(); CacheKeyBuilder = serviceProvider.GetService <ICacheKeyBuilder>(); DbMiniProfiler = serviceProvider.GetService <IDbMiniProfiler>(); SQLManager = serviceProvider.GetService <ISQLManager>(); Conn = new Lazy <IDbConnection>(() => CreateConnection(connectionName)); if (EnableMasterSlave) { ConnectionConfigureManager = serviceProvider.GetRequiredService <ConnectionConfigureManager>(); } }