Dapper parametrizado Actualizar e Insertar?

c# dapper sql

Pregunta

Estoy usando Dapper para mi aplicación de formularios Windows C #. Noté que la mayoría de sus operaciones CRUD toman el nombre de la clase como parámetro. Por ejemplo, dos tablas como a continuación:

    "Employee" Table
        Column Name  | Data Type |
        -------------------------
        EmpName      | string    |
        EmpNo        | string    |
        --------------------------

Employee.cs
[Table("Employee")]
public class Employee
{
   [Key]
   public string EmpNo {get;set;}
   public string EmpName {get;set;}
}

    "User" Table
        Column Name   | Data Type |
        -------------------------
        UserName      | string    |
        UserNo        | string    |
        --------------------------
User.cs
[Table("User")]
public class User
{
   [Key]
   public string UserNo {get;set;}
   public string UserName {get;set;}
}


    eg. var users= connection.Query<User>("select * from User" );
        var employees = connnection.GetList<Employee>();

hará las tareas apropiadas. pero, según mi connection.Insert<User>(user); or connection.Update<Employee>(emp); conocimiento. connection.Insert<User>(user); or connection.Update<Employee>(emp); no existe. Por favor, corrígeme si estoy equivocado, ¿hay algún problema para actualizar e insertar y dejar que aprende el tipo de clase? Soy muy consciente de Query() y Execute() , de hecho los estoy usando ahora mismo. ¿Hay GetList(ClassName); manera posible de hacerlo tan fácil como GetList(ClassName); es ?

Respuesta aceptada

Gracias a Marc Gravell. Lo encontré aquí . El desarrollo de código abierto de Dapper sí tiene implementación para Insert<ClassName>(obj) y Update<ClassName>(obj) .


Respuesta popular

Dapper maneja las cosas un poco diferente de lo que está pidiendo. No hay método Insertar o Actualizar. En su lugar, querrás hacerlo así para Insertar:

var p = new Product { Name = "Sam", Description = "Developer" };
p.Id = cnn.Query<int>(@"insert Products(Name,Description) 
values (@Name,@Description) 
select cast(scope_identity() as int)", p).First();

Esto es directamente de Sam Saffron, https://samsaffron.com/archive/2012/01/16/that-annoying-insert-problem-getting-data-into-the-db-using-dapper .

Para las actualizaciones, querrá un código como este:

public bool Update(Employee employee)
{
    string query = "UPDATE EMPLOYEE SET NAME = @Name WHERE Id = @Id";
    var count = this.db.Execute(query, employee);
    return count > 0;
}


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é