public DbContext(string connectionName = "Default", string databaseName = null) { DbContextData data = GetDbContextData(connectionName, databaseName); SqlGenerator = new SqlGenerator(data.DbProvider); DbConnection = data.DbProviderFactory.CreateConnection(); if (DbConnection == null) { throw new ArgumentNullException("connectionName"); } DbConnection.ConnectionString = data.ConnectionString; if (DbConnection.State != ConnectionState.Open) { DbConnection.Open(); } }
private DbContextData CreateDbContextData(string connectionName = "Default", string databaseName = null) { DbContextData data = new DbContextData(); ConnectionName = connectionName; ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings[connectionName]; if (setting == null) { throw new Exception(string.Format("名为:{0}的节点不存在!", connectionName)); } IDecryptProvider decryptProvider = null; string strDecryptProvider = ConfigurationManager.AppSettings["Dapper.Extensions.DecryptProvider"]; if (!string.IsNullOrWhiteSpace(strDecryptProvider)) { Type encryptProviderType = Type.GetType(strDecryptProvider, true); decryptProvider = (IDecryptProvider)Activator.CreateInstance(encryptProviderType); } string connectionString = setting.ConnectionString; if (decryptProvider != null) { connectionString = decryptProvider.Decrypt(setting.ConnectionString); } if (!string.IsNullOrWhiteSpace(databaseName)) { connectionString = string.Format(connectionString, databaseName); } Type dbConnectionType = Type.GetType(setting.ProviderName, true); IDbProvider dbProvider = (IDbProvider)Activator.CreateInstance(dbConnectionType); DbProviderFactory dbProviderFactory = DbProviderFactories.GetFactory(dbProvider.ProviderName); data.ConnectionString = connectionString; data.DbProvider = dbProvider; data.DbProviderFactory = dbProviderFactory; return(data); }