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())); }
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())); }
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); }
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) }); }
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) }); }