Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come inserire un elenco C# nel database utilizzando Dapper.NET

Dovresti farlo in modo leggermente diverso. In Dapper, corrisponde alla convenzione AKA proprietà o nomi di campo identici ai parametri SQL. Quindi, supponendo che tu abbia un MyObject :

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

    public string B { get; set; }
}

E supponendo processList = List<MyObject> , Vorresti farlo

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

Nota che il MyObject i nomi delle proprietà A e B corrispondono ai nomi dei parametri SQL @A e @B.

Se non vuoi rinominare gli oggetti, puoi utilizzare i tipi anonimi per eseguire le mappature invece dei tipi concreti:

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

MODIFICA:

Secondo il commento di Marc Gravell, puoi anche chiedere a Dapper di fare il giro per te:

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