public override object ExecuteScalar(Expression expression, Type type)
        {
            var visitor = new SqlCommandTextVisitor(this);

            visitor.Visit(expression);
            return(ExecuteScalar(visitor.CommandText));
        }
        public override IEnumerable ExecuteQuery(Type elementType, Expression expression)
        {
            var visitor = new SqlCommandTextVisitor(this);

            visitor.Visit(expression);
            return(ExecuteQuery(elementType, visitor.CommandText));
        }
        public override void ExecuteNonQuery(Expression expression)
        {
            var visitor = new SqlCommandTextVisitor(this);

            visitor.Visit(expression);
            ExecuteNonQuery(visitor.CommandText);
        }
 public override void BulkInsert(IEnumerable entities, TableAttribute table, IColumnInfoCollection columns)
 {
     using (_connection = OpenConnection())
     {
         lock (_connection)
         {
             _transaction = null;
             var sb = new StringBuilder();
             foreach (var entity in entities)
             {
                 var expression = CreateInsertExpression(entity, table, columns);
                 var visitor    = new SqlCommandTextVisitor(this);
                 visitor.Visit(expression);
                 sb.AppendLine(visitor.CommandText);
             }
             ExecuteNonQuery(sb.ToString());
         }
     }
 }