Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como inserir uma lista C# no banco de dados usando o Dapper.NET


Você teria que fazer um pouco diferente. No Dapper, ele corresponde à convenção AKA de propriedade ou nomes de campo idênticos aos parâmetros SQL. Então, supondo que você tenha um MyObject :
public class MyObject
{
    public int A { get; set; }

    public string B { get; set; }
}

E assumindo processList = List<MyObject> , você gostaria de fazer isso
foreach (var item in processList)
{
    string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@A, @B)";        
    connection.Execute(processQuery, item);
}

Observe que o MyObject os nomes de propriedade A e B correspondem aos nomes de parâmetro SQL @A e @B.

Se você não quiser renomear objetos, você pode usar tipos anônimos para fazer os mapeamentos em vez 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:

De acordo com o comentário de Marc Gravell, você também pode fazer com que o Dapper faça o loop para você:
string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@A, @B)";        
connection.Execute(processQuery, processList);