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);
        }
Beispiel #2
0
        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);
            }
        }