Beispiel #1
0
        public static int BatchUpdate <T>(this IQueryable <T> query, Expression <Func <T, T> > updateExpression, Dictionary <string, object> parametersDict = null) where T : class
        {
            var context = BatchUtil.GetDbContext(query);

            var(sql, sqlParameters) = BatchUtil.GetSqlUpdate(query, context, updateExpression, parametersDict);
            return(BatchUtil.ExecuteSql(context, sql, sqlParameters));
        }
Beispiel #2
0
        public static int BatchUpdate <T>(this IQueryable <T> query, T updateValues, List <string> updateColumns = null, Dictionary <string, object> parametersDict = null) where T : class, new()
        {
            DbContext context = BatchUtil.GetDbContext(query);

            var(sql, sqlParameters) = BatchUtil.GetSqlUpdate(query, context, updateValues, updateColumns, parametersDict);
            return(BatchUtil.ExecuteSql(context, sql, sqlParameters));
        }
        private static (DbContext, string, List <object>) GetBatchDeleteArguments(IQueryable query)
        {
            var context = BatchUtil.GetDbContext(query);

            var(sql, sqlParameters) = BatchUtil.GetSqlDelete(query, context);
            return(context, sql, sqlParameters);
        }
Beispiel #4
0
        public static int BatchDelete <T>(this IQueryable <T> query, Dictionary <string, object> parametersDict = null) where T : class
        {
            DbContext context = BatchUtil.GetDbContext(query);

            (string sql, var sqlParameters) = BatchUtil.GetSqlDelete(query, context, parametersDict);
            return(BatchUtil.ExecuteSql(context, sql, sqlParameters));
        }
Beispiel #5
0
        public static int BatchDelete <T>(this IQueryable <T> query) where T : class, new()
        {
            DbContext context = BatchUtil.GetDbContext(query);
            string    sql     = BatchUtil.GetSqlDelete(query);

            return(context.Database.ExecuteSqlCommand(sql));
        }
Beispiel #6
0
        public static async Task <int> BatchUpdateAsync(this IQueryable query, Type type, Expression <Func <object, object> > updateExpression, CancellationToken cancellationToken = default)
        {
            var context = BatchUtil.GetDbContext(query);

            var(sql, sqlParameters) = BatchUtil.GetSqlUpdate(query, context, type, updateExpression);
            return(await context.Database.ExecuteSqlRawAsync(sql, sqlParameters, cancellationToken).ConfigureAwait(false));
        }
Beispiel #7
0
        public static int BatchUpdate <T>(this IQueryable <T> query, Expression <Func <T, T> > updateExpression) where T : class
        {
            var context = BatchUtil.GetDbContext(query);

            var(sql, sqlParameters) = BatchUtil.GetSqlUpdate(query, context, updateExpression);
            return(context.Database.ExecuteSqlRaw(sql, sqlParameters));
        }
Beispiel #8
0
        public static int BatchDelete(this IQueryable query)
        {
            var context = BatchUtil.GetDbContext(query);

            var(sql, sqlParameters) = BatchUtil.GetSqlDelete(query, context);
            return(context.Database.ExecuteSqlRaw(sql, sqlParameters));
        }
Beispiel #9
0
        public static int BatchUpdate(this IQueryable query, object updateValues, List <string> updateColumns = null)
        {
            var context = BatchUtil.GetDbContext(query);

            var(sql, sqlParameters) = BatchUtil.GetSqlUpdate(query, context, updateValues, updateColumns);
            return(context.Database.ExecuteSqlRaw(sql, sqlParameters));
        }
Beispiel #10
0
        public static async Task <int> BatchUpdateAsync(this IQueryable query, object updateValues, List <string> updateColumns = null, CancellationToken cancellationToken = default)
        {
            var context = BatchUtil.GetDbContext(query);

            var(sql, sqlParameters) = BatchUtil.GetSqlUpdate(query, context, updateValues, updateColumns);
            return(await context.Database.ExecuteSqlRawAsync(sql, sqlParameters, cancellationToken).ConfigureAwait(false));
        }
Beispiel #11
0
        // Async methods

        public static async Task <int> BatchDeleteAsync(this IQueryable query, CancellationToken cancellationToken = default)
        {
            var context = BatchUtil.GetDbContext(query);

            var(sql, sqlParameters) = BatchUtil.GetSqlDelete(query, context);
            return(await context.Database.ExecuteSqlRawAsync(sql, sqlParameters, cancellationToken).ConfigureAwait(false));
        }
Beispiel #12
0
        // Async methods

        public static async Task <int> BatchDeleteAsync <T>(this IQueryable <T> query) where T : class, new()
        {
            DbContext context = BatchUtil.GetDbContext(query);
            string    sql     = BatchUtil.GetSqlDelete(query);

            return(await context.Database.ExecuteSqlCommandAsync(sql));
        }
        // Async methods

        public static async Task <int> BatchDeleteAsync <T>(this IQueryable <T> query, CancellationToken cancellationToken = default) where T : class
        {
            DbContext context = BatchUtil.GetDbContext(query);

            (string sql, var sqlParameters) = BatchUtil.GetSqlDelete(query, context);
            return(await BatchUtil.ExecuteSqlAsync(context, sql, sqlParameters, cancellationToken).ConfigureAwait(false));
        }
        public static int BatchUpdate <T>(this IQueryable <T> query, T updateValues, List <string> updateColumns = null) where T : class, new()
        {
            DbContext context = BatchUtil.GetDbContext(query);

            var(sql, sqlParameters) = BatchUtil.GetSqlUpdate(query, context, updateValues, updateColumns);
            return(context.Database.ExecuteSqlRaw(sql, sqlParameters));
        }
Beispiel #15
0
        public static async Task <int> BatchUpdateAsync <T>(this IQueryable <T> query, T updateValues, List <string> updateColumns = null) where T : class, new()
        {
            DbContext context = BatchUtil.GetDbContext(query);

            var(sql, sqlParameters) = BatchUtil.GetSqlUpdate(query, context, updateValues, updateColumns);
            return(await context.Database.ExecuteSqlCommandAsync(sql, sqlParameters.ToArray()));
        }
        public static int BatchDelete <T>(this IQueryable <T> query) where T : class
        {
            DbContext context = BatchUtil.GetDbContext(query);

            (string sql, var sqlParameters) = BatchUtil.GetSqlDelete(query, context);
            return(context.Database.ExecuteSqlRaw(sql, sqlParameters));
        }
        public static async Task <int> BatchUpdateAsync <T>(this IQueryable <T> query, Expression <Func <T, T> > updateExpression, CancellationToken cancellationToken = default) where T : class
        {
            var context = BatchUtil.GetDbContext(query);

            var(sql, sqlParameters) = BatchUtil.GetSqlUpdate(query, context, updateExpression);
            return(await BatchUtil.ExecuteSqlAsync(context, sql, sqlParameters, cancellationToken).ConfigureAwait(false));
        }
        public static async Task <int> BatchUpdateAsync <T>(this IQueryable <T> query, T updateValues, List <string> updateColumns = null, CancellationToken cancellationToken = default) where T : class, new()
        {
            DbContext context = BatchUtil.GetDbContext(query);

            var(sql, sqlParameters) = BatchUtil.GetSqlUpdate(query, context, updateValues, updateColumns);
            return(await BatchUtil.ExecuteSqlAsync(context, sql, sqlParameters, cancellationToken).ConfigureAwait(false));
        }
Beispiel #19
0
        public static int BatchUpdate(this IQueryable query, Type type, Expression <Func <object, object> > updateExpression)
        {
            var context = BatchUtil.GetDbContext(query);

            var(sql, sqlParameters) = BatchUtil.GetSqlUpdate(query, context, type, updateExpression);
            return(context.Database.ExecuteSqlRaw(sql, sqlParameters));
        }
Beispiel #20
0
        public static async Task <int> BatchUpdateAsync <T>(this IQueryable <T> query, Expression <Func <T, bool> > updateExpression) where T : class, new()
        {
            var context = BatchUtil.GetDbContext(query);

            var(sql, sp) = BatchUtil.GetSqlUpdate(query, updateExpression);
            return(await context.Database.ExecuteSqlCommandAsync(sql, sp));
        }
Beispiel #21
0
        public static int BatchUpdate <T>(this IQueryable <T> query, T updateValues, List <string> updateColumns = null) where T : class, new()
        {
            DbContext           context    = BatchUtil.GetDbContext(query);
            List <SqlParameter> parameters = new List <SqlParameter>();
            string sql = BatchUtil.GetSqlUpdate(query, context, updateValues, updateColumns, parameters);

            return(context.Database.ExecuteSqlCommand(sql, parameters.ToArray()));
        }
Beispiel #22
0
        // Async methods

        public static async Task <int> BatchDeleteAsync <T>(this IQueryable <T> query, CancellationToken cancellationToken = default(CancellationToken)) where T : class
        {
            DbContext context      = BatchUtil.GetDbContext(query);
            DbServer  databaseType = context.Database.ProviderName.EndsWith(DbServer.Sqlite.ToString()) ? DbServer.Sqlite : DbServer.SqlServer;

            (string sql, var sqlParameters) = BatchUtil.GetSqlDelete(query, context);
            return(await context.Database.ExecuteSqlCommandAsync(sql, sqlParameters, cancellationToken).ConfigureAwait(false));
        }
        private static (DbContext, string, List <object>) GetBatchUpdateArguments <T>(IQueryable <T> query, object updateValues = null, List <string> updateColumns = null, Expression <Func <T, T> > updateExpression = null, Type type = null) where T : class
        {
            type ??= typeof(T);
            var context = BatchUtil.GetDbContext(query);

            var(sql, sqlParameters) = updateExpression == null?BatchUtil.GetSqlUpdate(query, context, type, updateValues, updateColumns)
                                          : BatchUtil.GetSqlUpdate(query, context, type, updateExpression);

            return(context, sql, sqlParameters);
        }
Beispiel #24
0
        /// <summary>
        /// get Update Sql
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="query"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static (string, List <object>) GetSqlUpdate <T>(IQueryable <T> query, Expression <Func <T, T> > expression) where T : class
        {
            DbContext context = BatchUtil.GetDbContext(query);

            (string sql, string tableAlias, string tableAliasSufixAs, IEnumerable <object> innerParameters) = GetBatchSql(query, context, isUpdate: true);
            var sqlColumns          = new StringBuilder();
            var sqlParameters       = new List <object>(innerParameters);
            var columnNameValueDict = TableInfo.CreateInstance(GetDbContext(query), new List <T>(), OperationType.Read, new BulkConfig()).PropertyColumnNamesDict;

            CreateUpdateBody(columnNameValueDict, tableAlias, expression.Body, ref sqlColumns, ref sqlParameters);

            sqlParameters = ReloadSqlParameters(context, sqlParameters); // Sqlite requires SqliteParameters
            sqlColumns    = (GetDatabaseType(context) == DbServer.SqlServer) ? sqlColumns : sqlColumns.Replace($"[{tableAlias}].", "");

            var resultQuery = $"UPDATE {tableAlias}{tableAliasSufixAs} SET {sqlColumns} {sql}";

            return(resultQuery, sqlParameters);
        }
        public static void BatchInsert <T>(this IQueryable query, IList <T> entities, BulkConfig bulkConfig = null) where T : class
        {
            var context = BatchUtil.GetDbContext(query);

            DbContextBulkTransaction.Execute(context, entities, OperationType.Insert, bulkConfig, null);
        }
        public static Task BatchInsertAsync <T>(this IQueryable query, IList <T> entities, BulkConfig bulkConfig = null, CancellationToken cancellationToken = default) where T : class
        {
            var context = BatchUtil.GetDbContext(query);

            return(DbContextBulkTransaction.ExecuteAsync(context, entities, OperationType.Insert, bulkConfig, null, cancellationToken));
        }