public void BuildUpdateQuery_CorrectParamsPassed_CorrectQueryReturned() { // Arrange & Act var objIds = _objs.Select(o => o.Id).ToList(); var props = typeof(TestObjModel).GetProperties().ToList(); var obj = _objs.First(); var sql = SqlQueryBuilder.BuildUpdateQuery(_tableName, objIds, props, obj); // Assert Assert.AreNotEqual(string.Empty, sql); }
public static async Task BatchUpdateAsync <T, TK>( this DbSet <T> set, List <TK> ids, T obj ) where T : class { if (obj == null || ids.Count < 1) { return; } var ctx = set.GetDbContext(); var entityType = ctx.Model.FindEntityType(typeof(T)); var props = entityType.GetProperties().Select(p => p.PropertyInfo); var idBatches = ids.Batches(BatchSize); foreach (var idBatch in idBatches) { var sql = SqlQueryBuilder.BuildUpdateQuery( set.GetTableName(), idBatch.ToList(), props.ToList(), obj ); await ctx.Database.ExecuteSqlRawAsync(sql); } }