public SQLiteDataReaderED(DbCommand cmd, CommandBehavior behaviour, SQLiteTransactionED<TConn> txn = null, SQLiteTxnLockED<TConn> txnlock = null)
 {
     this._command = cmd;
     this.InnerReader = cmd.ExecuteReader(behaviour);
     this._transaction = txn;
     this._txnlock = txnlock;
 }
 protected void SetTransaction(DbTransaction txn)
 {
     // We only accept wrapped transactions in order to avoid deadlocks
     if (txn == null || txn is SQLiteTransactionED<TConn>)
     {
         _transaction = (SQLiteTransactionED<TConn>)txn;
         InnerCommand.Transaction = _transaction.InnerTransaction;
     }
     else
     {
         throw new InvalidOperationException(String.Format("Expected a {0}; got a {1}", typeof(SQLiteTransactionED<TConn>).FullName, txn.GetType().FullName));
     }
 }