Réaliser des insertions et des mises à jour avec Dapper

Je suis intéressé par l’utilisation de Dapper – mais d’après ce que je peux dire, il ne supporte que Query and Execute. Je ne vois pas que Dapper inclut un moyen d’insérer et de mettre à jour des objects.

Étant donné que notre projet (la plupart des projets?) Doit faire des insertions et des mises à jour, quelle est la meilleure pratique pour réaliser des insertions et des mises à jour avec Dapper?

De préférence, nous n’aurions pas à recourir à la méthode ADO.NET de création de parameters, etc.

La meilleure réponse que je puisse trouver à ce stade est d’utiliser LinqToSQL pour les insertions et les mises à jour. Y a-t-il une meilleure réponse?

Nous cherchons à créer quelques assistants, en décidant toujours des API et si cela va dans le kernel ou non. Voir: https://code.google.com/archive/p/dapper-dot-net/issues/6 pour la progression.

En attendant, vous pouvez faire ce qui suit

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

Voir aussi mon article de blog: Ce problème INSERT ennuyant

Mettre à jour

Comme indiqué dans les commentaires, il existe maintenant plusieurs extensions disponibles dans le projet Dapper.Consortingb sous la forme de ces méthodes d’extension IDbConnection :

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

Effectuer des opérations CRUD en utilisant Dapper est une tâche facile. J’ai mentionné les exemples ci-dessous qui devraient vous aider dans les opérations CRUD.

Code pour C RUD:

Méthode n ° 1: cette méthode est utilisée lorsque vous insérez des valeurs de différentes entités.

 using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionSsortingngs["myDbConnection"].ConnectionSsortingng)) { ssortingng 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éthode n ° 2: Cette méthode est utilisée lorsque les propriétés de votre entité ont les mêmes noms que les colonnes SQL. Ainsi, Dapper étant un ORM mappe les propriétés d’entité avec les colonnes SQL correspondantes.

 using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionSsortingngs["myDbConnection"].ConnectionSsortingng)) { ssortingng insertQuery = @"INSERT INTO [dbo].[Customer]([FirstName], [LastName], [State], [City], [IsActive], [CreatedOn]) VALUES (@FirstName, @LastName, @State, @City, @IsActive, @CreatedOn)"; var result = db.Execute(insertQuery, customerViewModel); } 

Code pour C R UD:

 using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionSsortingngs["myDbConnection"].ConnectionSsortingng)) { ssortingng selectQuery = @"SELECT * FROM [dbo].[Customer] WHERE FirstName = @FirstName"; var result = db.Query(selectQuery, new { customerModel.FirstName }); } 

Code pour CR U D:

 using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionSsortingngs["myDbConnection"].ConnectionSsortingng)) { ssortingng updateQuery = @"UPDATE [dbo].[Customer] SET IsActive = @IsActive WHERE FirstName = @FirstName AND LastName = @LastName"; var result = db.Execute(updateQuery, new { isActive, customerModel.FirstName, customerModel.LastName }); } 

Code pour CRU D :

 using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionSsortingngs["myDbConnection"].ConnectionSsortingng)) { ssortingng deleteQuery = @"DELETE FROM [dbo].[Customer] WHERE FirstName = @FirstName AND LastName = @LastName"; var result = db.Execute(deleteQuery, new { customerModel.FirstName, customerModel.LastName }); } 

vous pouvez le faire de telle manière:

 sqlConnection.Open(); ssortingng sqlQuery = "INSERT INTO [dbo].[Customer]([FirstName],[LastName],[Address],[City]) VALUES (@FirstName,@LastName,@Address,@City)"; sqlConnection.Execute(sqlQuery, new { customerEntity.FirstName, customerEntity.LastName, customerEntity.Address, customerEntity.City }); sqlConnection.Close(); 

Utiliser Dapper.Consortingb est aussi simple que cela:

Insérer une liste:

 public int Insert(IEnumerable yourClass) { using (SqlConnection conn = new SqlConnection(ConnectionSsortingng)) { conn.Open(); return conn.Insert(yourClass) ; } } 

Insérer un seul:

 public int Insert(YourClass yourClass) { using (SqlConnection conn = new SqlConnection(ConnectionSsortingng)) { conn.Open(); return conn.Insert(yourClass) ; } } 

Liste de mise à jour:

 public bool Update(IEnumerable yourClass) { using (SqlConnection conn = new SqlConnection(ConnectionSsortingng)) { conn.Open(); return conn.Update(yourClass) ; } } 

Mise à jour unique:

 public bool Update(YourClass yourClass) { using (SqlConnection conn = new SqlConnection(ConnectionSsortingng)) { conn.Open(); return conn.Update(yourClass) ; } } 

Source: https://github.com/StackExchange/Dapper/tree/master/Dapper.Consortingb