3 votes

Mise à jour et insertion paramétrées de Dapper ?

J'utilise Dapper pour mon application Windows C# forms. J'ai remarqué que la plupart des opérations CRUD prennent le nom de la classe en paramètre. Par exemple deux tables comme ci-dessous :

    "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>();

effectuera les tâches appropriées. mais, à ma connaissance connection.Insert<User>(user); or connection.Update<Employee>(emp); n'existe pas. Veuillez me corriger si je me trompe, existe-t-il un moyen de contourner la mise à jour et l'insertion en laissant dapper connaître le type de classe ? Je suis bien conscient de l'existence de Query() y Execute() Je les utilise d'ailleurs en ce moment même. Est-il possible de rendre les choses aussi simples que possible ? GetList(ClassName); est ?

3voto

RandomBen Points 4012

Dapper gère les choses un peu différemment de ce que vous demandez. Il n'y a pas de méthode d'insertion ou de mise à jour. Au lieu de cela, vous devrez procéder comme suit pour Insert :

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();

Cette information provient directement de Sam Saffron, https://samsaffron.com/archive/2012/01/16/that-annoying-insert-problem-getting-data-into-the-db-using-dapper .

Pour les mises à jour, vous aurez besoin d'un code comme celui-ci :

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;
}

2voto

Merci à Marc Gravell. Je l'ai trouvé aquí . Le développement open source de Dapper prévoit la mise en œuvre de Insert<ClassName>(obj) y Update<ClassName>(obj) .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X