public async Task TM_UpdateConcepts_SATGroup() { var connectionString = ConfigManager.GetValue("ConfigConnectionStringTest"); using var context = new CotorraContext(connectionString); Expression <Func <ConceptPayment, bool> > expression = exp => exp.Active; var conceptPayments = await context.ConceptPayment.Where(expression).ToListAsync(); var memoryStorageContext = new MemoryStorageContext(); var accumulateds = memoryStorageContext.GetDefaultAccumulatedType(Guid.Empty, Guid.Empty, Guid.Empty); (var conceptPaymentsMemory, var pr) = memoryStorageContext.GetDefaultConcept <ConceptPayment>(Guid.Empty, Guid.Empty, Guid.Empty, accumulateds); conceptPayments.ForEach(conceptInDB => { var conceptFoundInMemory = conceptPaymentsMemory .FirstOrDefault(p => p.Code == conceptInDB.Code && p.ConceptType == conceptInDB.ConceptType); if (null != conceptFoundInMemory) { conceptInDB.SATGroupCode = conceptFoundInMemory.SATGroupCode; } }); var concept22 = conceptPayments.AsParallel().Where(p => p.Code == 22 && p.ConceptType == ConceptType.SalaryPayment); context.UpdateRange(conceptPayments); await context.SaveChangesAsync(); }
public async Task UpdateAsync(IEnumerable <Guid> idsToUpdate, CotorriaStatus status, Guid identityWorkID, params object[] parameters) { using var context = new CotorraContext(ConnectionManager.ConfigConnectionString); DateTime now = DateTime.UtcNow; string nowStrng = now.ToString("yyyy-mm-dd HH:mm:ss.fffffff"); context.ChangeTracker.AutoDetectChangesEnabled = false; var keys = idsToUpdate.Select(p => "'" + p + "'").ToArray(); var keySplitted = String.Join(",", keys); var sql = Validator.GetPersonalizedQuery(status, keySplitted, parameters); if (string.IsNullOrEmpty(sql)) { sql = $"update {typeof(T).Name} set LocalStatus = {(int)status}, LastStatusChange = getdate() where ID in ({keySplitted}) "; } var row = await context.Database.ExecuteSqlRawAsync(sql); await context.SaveChangesAsync(); }