Actualizar múltiples registros usando dapper después de seleccionar por uniqueidentifier

c# dapper

Pregunta

Tengo un número de registros que he cargado de la base de datos y deseo actualizar los valores de pareja establecidos antes de devolverlos. El único requisito principal es que no quiero que varios comandos actualicen cada registro uno por uno.

Tenga en cuenta que mis ID son GUID (uniqueidentifier)

hasta ahora tengo mi código como

public IEnumerable<Person> GetUnprocessedPeople(int batchSize)
    {
        List<Queue_ImportQueue> list;
        using (IDbConnection db = OpenedConnection)
        {
            string peopleList = $"SELECT TOP({batchSize}) * FROM [dbo].[Person]";

            list = db.Query<Person>(peopleList).ToList();
            using (IDbTransaction transactionScope = db.BeginTransaction(IsolationLevel.Serializable))
            {
                string updateQuery = $"UPDATE [dbo].[Person] SET Created = GETDATE() WHERE Id ='@ids'";

                try
                {
                    db.Execute(updateQuery, new { Id = list.Select(x => x.Id) }, transactionScope);
                    transactionScope.Commit();
                }
                catch (Exception ex)
                {
                    transactionScope.Rollback();
                    throw;
                }
            }
        }
        return list;
    }

Respuesta popular

OK, la solución fue bastante simple. No hay necesidad de un casting específico. solo asegúrate de tener todos los argumentos correctos. Así que extrae que ha corregido la consulta para mí:

            string updateQuery = $"UPDATE [dbo].[Person] SET Created = GETDATE() WHERE Id ='@Ids'";

           ...

            db.Execute(updateQuery, new { Ids = list.Select(x => x.Id) }, transactionScope);


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué