/// <summary> /// /// </summary> /// <param name="entityType"></param> /// <param name="connection"></param> /// <param name="tableName"></param> /// <param name="entities"></param> /// <param name="qualifiers"></param> /// <param name="batchSize"></param> /// <param name="fields"></param> /// <param name="hints"></param> /// <param name="transaction"></param> /// <param name="statementBuilder"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public static async Task <UpdateAllExecutionContext> CreateAsync(Type entityType, IDbConnection connection, string tableName, IEnumerable <object> entities, IEnumerable <Field> qualifiers, int batchSize, IEnumerable <Field> fields, string hints = null, IDbTransaction transaction = null, IStatementBuilder statementBuilder = null, CancellationToken cancellationToken = default) { var key = GetKey(entityType, tableName, qualifiers, fields, batchSize, hints); // Get from cache var context = UpdateAllExecutionContextCache.Get(key); if (context != null) { return(context); } // Create var dbFields = await DbFieldCache.GetAsync(connection, tableName, transaction, cancellationToken); var request = new UpdateAllRequest(tableName, connection, transaction, fields, qualifiers, batchSize, hints, statementBuilder); var commandText = await CommandTextCache.GetUpdateAllTextAsync(request, cancellationToken); // Call context = CreateInternal(entityType, connection, tableName, entities, dbFields, qualifiers, batchSize, fields, commandText); // Add to cache UpdateAllExecutionContextCache.Add(key, context); // Return return(context); }
/// <summary> /// /// </summary> /// <typeparam name="TEntity"></typeparam> /// <param name="connection"></param> /// <param name="tableName"></param> /// <param name="entities"></param> /// <param name="qualifiers"></param> /// <param name="batchSize"></param> /// <param name="fields"></param> /// <param name="hints"></param> /// <param name="transaction"></param> /// <param name="statementBuilder"></param> /// <returns></returns> public static UpdateAllExecutionContext <TEntity> Create <TEntity>(IDbConnection connection, string tableName, IEnumerable <TEntity> entities, IEnumerable <Field> qualifiers, int batchSize, IEnumerable <Field> fields, string hints = null, IDbTransaction transaction = null, IStatementBuilder statementBuilder = null) where TEntity : class { var key = GetKey <TEntity>(tableName, qualifiers, fields, batchSize, hints); // Get from cache var context = UpdateAllExecutionContextCache.Get <TEntity>(key); if (context != null) { return(context); } // Create var dbFields = DbFieldCache.Get(connection, tableName, transaction); var request = new UpdateAllRequest(tableName, connection, transaction, fields, qualifiers, batchSize, hints, statementBuilder); var commandText = CommandTextCache.GetUpdateAllText(request); // Call context = CreateInternal <TEntity>(connection, tableName, entities, dbFields, qualifiers, batchSize, fields, commandText); // Add to cache UpdateAllExecutionContextCache.Add <TEntity>(key, context); // Return return(context); }
/// <summary> /// /// </summary> /// <typeparam name="TEntity"></typeparam> /// <param name="connection"></param> /// <param name="tableName"></param> /// <param name="entities"></param> /// <param name="qualifiers"></param> /// <param name="batchSize"></param> /// <param name="fields"></param> /// <param name="hints"></param> /// <param name="transaction"></param> /// <param name="statementBuilder"></param> /// <returns></returns> public static async Task <UpdateAllExecutionContext <TEntity> > CreateAsync <TEntity>(IDbConnection connection, string tableName, IEnumerable <TEntity> entities, IEnumerable <Field> qualifiers, int batchSize, IEnumerable <Field> fields, string hints = null, IDbTransaction transaction = null, IStatementBuilder statementBuilder = null) where TEntity : class { var key = GetKey <TEntity>(tableName, qualifiers, fields, batchSize, hints); // Get from cache var context = UpdateAllExecutionContextCache.Get <TEntity>(key); if (context != null) { return(context); } // Create var dbFields = await DbFieldCache.GetAsync(connection, tableName, transaction); context = CreateInternal <TEntity>(connection, tableName, entities, dbFields, qualifiers, batchSize, fields, hints, transaction, statementBuilder); // Add to cache UpdateAllExecutionContextCache.Add <TEntity>(key, context); // Return return(context); }