Exemplo n.º 1
0
        public void Format_Commas_OnNewLine()
        {
            var formatted = QueryFormatter.Format("select cola, colb, colc from dbo.table where cola = \"test\"");

            Assert.Equal(@"SELECT
cola
,colb
,colc
FROM
dbo.table
WHERE
cola = ""test""", formatted);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Deletes every row in the table that satisfies the given predicate.
        /// </summary>
        /// <returns>The number of rows deleted.</returns>
        public int Delete(Expression <Func <T, bool> > predicate)
        {
            if (predicate == null)
            {
                throw new ArgumentNullException(nameof(predicate));
            }

            var pred = PropertyReplacer.Replace(predicate.Body, predicate.Parameters[0]);

            pred = ((SQLiteQueryProvider)Provider).Translate(pred);

            if (pred is ProjectionExpression projection)
            {
                pred = projection.Source;
            }
            var args    = new List <object>();
            var cmdText = $"DELETE FROM [{Name}] WHERE {QueryFormatter.Format(pred, args)};";

            _db.Execute(cmdText, args.ToArray());

            return(_db.Changes);
        }
        internal IEnumerable <T> ExecuteQuery <T>(ProjectionExpression projection)
        {
            List <object> args = new List <object>();
            string        sql  = QueryFormatter.Format(projection.Source, args);

            Database.Log?.Invoke(sql);

            using (SQLiteQuery query = Database.ExecuteQuery(sql, args.ToArray()))
            {
                LambdaExpression projectorExpr = ProjectionBuilder.Build(
                    projection.Projector,
                    projection.Source.Alias,
                    name => string.IsNullOrEmpty(name) ? 0 : query.GetColumnIndex(name)
                    );

                var projector = (Func <SQLiteQueryProvider, SQLiteQuery, T>)projectorExpr.Compile();

                while (query.Step())
                {
                    yield return(projector(this, query));
                }
            }
        }
Exemplo n.º 4
0
 public override string ToString()
 {
     return(QueryFormatter.Format(this));
 }