Esempio n. 1
0
 /// <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);
     }
 }
Esempio n. 2
0
 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);
             }
         }
     }
 }