Ejemplo n.º 1
0
        public IDbConnection Get(IRelational relational, Func <IDbConnection> newConnection)
        {
            if (relational == null)
            {
                throw new ArgumentNullException("relational");
            }
            if (newConnection == null)
            {
                throw new ArgumentNullException("newConnection");
            }
            else
            {
                this._newConnection = newConnection;
            }
            IDbConnection connection = null;

            if (!this._connections.TryGetValue(relational, out connection))
            {
                connection = newConnection();
                if (!DatabaseAccessAuxiliary.TryConnectConnection(connection))
                {
                    DatabaseAccessAuxiliary.CloseConnection(connection);
                    connection = null;
                }
                else
                {
                    relational.Disposed += this._closeRelationalEvt;
                    this._connections.Add(relational, connection);
                }
            }
            return(connection);
        }
Ejemplo n.º 2
0
        private void OnCloseRelational(object sender, EventArgs e)
        {
            IRelational relational = sender as IRelational;

            if (relational != null)
            {
                this.Remove(relational);
            }
        }
Ejemplo n.º 3
0
 private void Maintenance(object sender, EventArgs e)
 {
     foreach (KeyValuePair <IRelational, IDbConnection> pair in this._connections)
     {
         IDbConnection connection = pair.Value;
         IRelational   relational = pair.Key;
         if (connection == null ||
             relational == null ||
             relational.IsDisposed ||
             connection.State != ConnectionState.Open)
         {
             this.Remove(relational);
         }
     }
 }
Ejemplo n.º 4
0
        public virtual IDbConnection Remove(IRelational relational)
        {
            if (relational == null)
            {
                throw new ArgumentNullException("relational");
            }
            IDbConnection connection = null;

            if (this._connections.TryGetValue(relational, out connection))
            {
                relational.Disposed -= this._closeRelationalEvt;
                this._connections.Remove(relational);
            }
            DatabaseAccessAuxiliary.CloseConnection(connection);
            return(connection);
        }
Ejemplo n.º 5
0
 public MSSQLDatabaseAccessAdapter(IRelational relational, string server, string database, string loginId, string password) :
     base(server, database, loginId, password)
 {
     this.relational = relational ?? throw new ArgumentNullException("relational");
 }