Operações de inserção com Dapper
- O Dapper disponibiliza o método de extensão
Execute()para executar comandos SQL de inserção, atualização e exclusão, retorna o número de linhas afetadas (int). - Estratégia de inserção: escreva manualmente o comando
INSERTcom marcadores de parâmetro@NomeDoParametro; passe um objeto de entidade para mapear os parâmetros automaticamente e evitar injeção de SQL. - Sintaxe:
INSERT INTO NomeTabela(Coluna1,Coluna2...) VALUES(@Param1,@Param2...)
Exemplo
using System.Data;
using MySql.Data.MySqlClient;
using Dapper;
using System.Configuration;
using System.Collections.Generic;
namespace DapperDemo
{
class Program
{
static void Main(string[] args)
{
// 1.Ler string de conexão
var connStr = ConfigurationManager.ConnectionStrings["StudentConnection"].ConnectionString;
// 2.using libera automaticamente a conexão com o banco de dados
using (IDbConnection db = new MySqlConnection(connStr))
{
// 3.Montar SQL de inserção para a tabela student
string sql = @"INSERT INTO student (FirstName, LastName, Email)
VALUES (@FirstName, @LastName, @Email)";
// 4.Instanciar objeto de entidade
var stu = new Student()
{
FirstName = "foxdevelop",
LastName = "com",
Email = "admin@foxdevelop.com"
};
// 5.Executar inserção e capturar quantidade de linhas afetadas
int rows = db.Execute(sql, stu);
// 6.Consultar para validar os dados inseridos
List<Student> stuList = db.Query<Student>("SELECT * FROM student").ToList();
}
Console.ReadKey();
}
}
// Classe de entidade Student (nomes das propriedades devem coincidir com os parâmetros @ do SQL)
public class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
}Code language: HTML, XML (xml)
Observações
- Regras de mapeamento de parâmetros
O Dapper faz o casamento automático entre as propriedades da entidade e os parâmetros@xxxdo SQL. Não diferencia maiúsculas de minúsculas, mas é recomendado manter os nomes idênticos. - Valor de retorno do Execute
int rowsAffected = db.Execute(sql, stu);
- Retorno ≥1: inserção bem‑sucedida;
- Retorno 0: nenhuma linha foi inserida.
- Configuração da string de conexão (App.config)
<configuration>
<connectionStrings>
<add name="StudentConnection"
connectionString="server=localhost;database=testdb;uid=root;pwd=123456"
providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
</configuration>Code language: HTML, XML (xml)
Obter ID da chave primária autoincremental de novo registro (MySQL)
Se a tabela student tiver uma chave primária autoincremental Id, recupere o identificador do registro recém‑adicionado:
string sql = @"INSERT INTO student (FirstName, LastName, Email)
VALUES (@FirstName, @LastName, @Email);
SELECT LAST_INSERT_ID();";
long newStudentId = db.ExecuteScalar<long>(sql, stu);Code language: HTML, XML (xml)
Inserção
Previous: Primeiro exemplo
Next: Operação de atualização