Saltar al contenido

Cómo insertar una lista de C # en la base de datos usando Dapper.NET

Solución:

Tendrías que hacerlo de forma un poco diferente. En Dapper, coincide con la convención AKA, la propiedad o los nombres de campo son idénticos a los parámetros de SQL. Entonces, suponiendo que tuvieras un MyObject:

public class MyObject
{
    public int A { get; set; }

    public string B { get; set; }
}

Y asumiendo processList = List<MyObject>, Querrías hacer esto

foreach (var item in processList)
{
    string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@A, @B)";        
    connection.Execute(processQuery, item);
}

Tenga en cuenta que el MyObject los nombres de propiedad A y B coinciden con los nombres de parámetro SQL @A y @B.

Si no desea cambiar el nombre de los objetos, puede usar tipos anónimos para hacer las asignaciones en lugar de tipos concretos:

foreach (var item in processList)
{
    string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@A, @B)";        
    connection.Execute(processQuery, new { A = item.A, B = item.B });
}

EDITAR:

Según el comentario de Marc Gravell, también puede hacer que Dapper haga el ciclo por usted:

string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@A, @B)";        
connection.Execute(processQuery, processList);

Creo que la inserción masiva es mejor que iterar la lista e insertar una por una.

SqlTransaction trans = connection.BeginTransaction();

connection.Execute(@"
insert PROCESS_LOGS(Id, st_Time, ed_Time, td_Time)
values(@Id, @st_Time, @ed_Time, @td_Time)", processList, transaction: trans);

trans.Commit();

Referencia: https://stackoverflow.com/a/12609410/1136277

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *