sql >> Database >  >> RDS >> Sqlserver

Een C#-lijst in een database invoegen met Dapper.NET

Je zou het een beetje anders moeten doen. In Dapper komt het overeen met conventie AKA-eigenschap- of veldnamen die identiek zijn aan SQL-parameters. Dus, ervan uitgaande dat u een MyObject . had :

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

    public string B { get; set; }
}

En ervan uitgaande dat processList = List<MyObject> , Je zou dit willen doen

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

Merk op dat de MyObject eigenschapnamen A en B komen overeen met de SQL-parameternamen @A en @B.

Als u de naam van objecten niet wilt wijzigen, kunt u anonieme typen gebruiken om de toewijzingen uit te voeren in plaats van concrete typen:

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

BEWERKEN:

Volgens de opmerking van Marc Gravell kun je Dapper ook de loop voor je laten doen:

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


  1. Hoe kan ik null-waarden opnemen in een MIN of MAX?

  2. Statistieken SQL Server-databaseobjecten

  3. Query's herschrijven om de prestaties te verbeteren

  4. MYSQL naar outfile toegang geweigerd - maar mijn gebruiker heeft ALLE toegang... en de map is CHMOD 777