¿Las inserciones / actualizaciones de dapper requieren sql en línea?

.net c# dapper

Pregunta

¿Las inserciones / actualizaciones de Dapper requieren SQL en línea? Acabo de buscar en Google ejemplos de implementación de Dapper y parece que todos los ejemplos que encontré incluyen SQL en línea. ¿Puede indicarme cualquier ejemplo de inserción / actualización de Dapper que no utilice SQL en línea? ¿O se requiere SQL en línea para las inserciones / actualizaciones de Dapper?

Respuesta aceptada

Estamos buscando construir algunos ayudantes, aún decidir sobre las API y si esto va en el núcleo o no. Consulte: https://code.google.com/archive/p/dapper-dot-net/issues/6 para ver el progreso.

Mientras tanto, puedes hacer lo siguiente

val = "my value";
cnn.Execute("insert into Table(val) values (@val)", new {val});

cnn.Execute("update Table set val = @val where Id = @id", new {val, id = 1});

etcétera

Ver también la publicación de mi blog: ese molesto problema INSERT

Actualizar

Como se señala en los comentarios, ahora hay varias extensiones disponibles en el proyecto Dapper.Contrib en la forma de estos métodos de extensión IDbConnection :

T Get<T>(id);
IEnumerable<T> GetAll<T>();
int Insert<T>(T obj);
int Insert<T>(Enumerable<T> list);
bool Update<T>(T obj);
bool Update<T>(Enumerable<T> list);
bool Delete<T>(T obj);
bool Delete<T>(Enumerable<T> list);
bool DeleteAll<T>();

Respuesta popular

Realizar operaciones CRUD usando Dapper es una tarea fácil. He mencionado los ejemplos a continuación que deberían ayudarlo en las operaciones CRUD.

Código para C RUD:

Método n. ° 1: este método se usa cuando inserta valores de diferentes entidades.

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDbConnection"].ConnectionString))
{
    string insertQuery = @"INSERT INTO [dbo].[Customer]([FirstName], [LastName], [State], [City], [IsActive], [CreatedOn]) VALUES (@FirstName, @LastName, @State, @City, @IsActive, @CreatedOn)";

    var result = db.Execute(insertQuery, new
    {
        customerModel.FirstName,
        customerModel.LastName,
        StateModel.State,
        CityModel.City,
        isActive,
        CreatedOn = DateTime.Now
    });
}

Método n.º 2: este método se utiliza cuando las propiedades de su entidad tienen los mismos nombres que las columnas SQL. Por lo tanto, Dapper es un ORM asigna las propiedades de la entidad con las columnas SQL correspondientes.

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDbConnection"].ConnectionString))
{
    string insertQuery = @"INSERT INTO [dbo].[Customer]([FirstName], [LastName], [State], [City], [IsActive], [CreatedOn]) VALUES (@FirstName, @LastName, @State, @City, @IsActive, @CreatedOn)";

    var result = db.Execute(insertQuery, customerViewModel);
}

Código para C R UD:

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDbConnection"].ConnectionString))
{
    string selectQuery = @"SELECT * FROM [dbo].[Customer] WHERE FirstName = @FirstName";

    var result = db.Query(selectQuery, new
    {
        customerModel.FirstName
    });
}

Código para CR U D:

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDbConnection"].ConnectionString))
{
    string updateQuery = @"UPDATE [dbo].[Customer] SET IsActive = @IsActive WHERE FirstName = @FirstName AND LastName = @LastName";

    var result = db.Execute(updateQuery, new
    {
        isActive,
        customerModel.FirstName,
        customerModel.LastName
    });
}

Código para CRU D :

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDbConnection"].ConnectionString))
{
    string deleteQuery = @"DELETE FROM [dbo].[Customer] WHERE FirstName = @FirstName AND LastName = @LastName";

    var result = db.Execute(deleteQuery, new
    {
        customerModel.FirstName,
        customerModel.LastName
    });
}


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué