Exemple #1
0
        public static Task <int> UpdateAsync <TEntity>(this LolitaSetting <TEntity> self, CancellationToken cancellationToken = default(CancellationToken))
            where TEntity : class, new()
        {
            var executor = self.Query.GetService <ILolitaUpdateExecutor>();
            var context  = self.Query.GetService <ICurrentDbContext>().Context;

            return(executor.ExecuteAsync(context, self.GenerateBulkUpdateSql(), cancellationToken, self.Parameters.ToArray()));
        }
Exemple #2
0
        public static int Update <TEntity>(this LolitaSetting <TEntity> self)
            where TEntity : class, new()
        {
            var executor = self.Query.GetService <ILolitaUpdateExecutor>();
            var context  = self.Query.GetService <ICurrentDbContext>().Context;

            return(executor.Execute(context, self.GenerateBulkUpdateSql(), self.Parameters.ToArray()));
        }
Exemple #3
0
        public static string GenerateBulkUpdateSql <TEntity>(this LolitaSetting <TEntity> self)
            where TEntity : class
        {
            var executor = self.Query.GetService <ILolitaUpdateExecutor>();
            var sql      = executor.GenerateSql(self);

            self.GetService <ILoggerFactory>().CreateLogger("Lolita Bulk Updating").LogInformation(sql);
            return(sql);
        }
Exemple #4
0
        public virtual string GenerateSql <TEntity>(LolitaSetting <TEntity> lolita, RelationalQueryModelVisitor visitor) where TEntity : class, new()
        {
            var sb = new StringBuilder("UPDATE ");

            sb.Append(lolita.Table)
            .AppendLine()
            .Append("SET ")
            .Append(string.Join($", { Environment.NewLine }    ", lolita.Operations))
            .AppendLine()
            .Append(ParseWhere(visitor, lolita.Table))
            .Append(sqlGenerationHelper.StatementTerminator);

            return(sb.ToString());
        }
        public virtual string GenerateSql <TEntity>(LolitaSetting <TEntity> lolita) where TEntity : class
        {
            var originalSql = lolita.Query.ToSql(out IDictionary <string, string> tableAliases);

            var sb = new StringBuilder("UPDATE ");

            sb.Append(lolita.FullTable)
            .AppendLine()
            .Append("SET ")
            .Append(string.Join($", { Environment.NewLine }    ", lolita.Operations))
            .AppendLine()
            .Append(ParseWhere(originalSql, tableAliases))
            .Append(_sqlGenerationHelper.StatementTerminator);

            return(sb.ToString());
        }
        public static LolitaValuing <TEntity, TProperty> SetField <TEntity, TProperty>(this IQueryable <TEntity> self, Expression <Func <TEntity, TProperty> > SetValueExpression)
            where TEntity : class, new()
        {
            if (SetValueExpression == null)
            {
                throw new ArgumentNullException(nameof(SetValueExpression));
            }

            var factory  = self.GetService <IFieldParser>();
            var sqlfield = factory.VisitField(SetValueExpression);

            var inner = new LolitaSetting <TEntity> {
                Query = self, FullTable = factory.ParseFullTable(sqlfield), ShortTable = factory.ParseShortTable(sqlfield)
            };

            return(new LolitaValuing <TEntity, TProperty> {
                Inner = inner, CurrentField = factory.ParseField(sqlfield)
            });
        }
Exemple #7
0
        public static LolitaValuing <TEntity, TProperty> SetField <TEntity, TProperty>(this LolitaSetting <TEntity> self, Expression <Func <TEntity, TProperty> > SetValueExpression)
            where TEntity : class
        {
            if (SetValueExpression == null)
            {
                throw new ArgumentNullException("SetValueExpression");
            }

            var factory  = self.GetService <IFieldParser>();
            var sqlfield = factory.VisitField(SetValueExpression);

            return(new LolitaValuing <TEntity, TProperty> {
                Inner = self, CurrentField = factory.ParseField(sqlfield)
            });
        }