/// <summary> /// Получить соединение по имени /// </summary> /// <param name="name">Имя соединения</param> /// <param name="defaultConnectionString"></param> /// <returns>Содениение</returns> public IDbConnection GetConnection(string name, string defaultConnectionString = null) { lock (Sync) { Reload(); if (Registry.ContainsKey(name)) { var component = Registry[name]; if (component.InstantiateWithContainer) { return(component.Container.Get <IDbConnection>(component.ContainerName)); } else { return(Activator.CreateInstance(component.ConnectionType, component.ConnectionString) as IDbConnection); } } else if (name.Contains(";")) { //full connection string return(DatabaseExtensions.CreateDatabaseConnectionFromString(name)); } if (defaultConnectionString.IsNotEmpty()) { return(new SqlConnection(defaultConnectionString)); } return(null); } }
private static IEnumerable <XElement> InternalExecuteReader(string connection, string query, string elementName) { using (IDbConnection c = DatabaseExtensions.CreateDatabaseConnectionFromString(connection)){ c.Open(); IDbCommand cmd = c.CreateCommand(); cmd.CommandText = query; using (IDataReader r = cmd.ExecuteReader()){ while (r.Read() || r.NextResult()) { var e = new XElement(elementName); for (int i = 0; i < r.FieldCount; i++) { string name = r.GetName(i); e.SetAttr(name, r[i] is DBNull ? "" : r[i]); } yield return(e); } } } }