DbContext, DbSet etc dans Dapper

c# dapper sql

Question

Je travaille sur l'implémentation de tous les accès aux données avec dapper. Ma première idée était d'implémenter un modèle de référentiel à l'aide de dapper. à partir de: http://www.bradoncode.com/blog/2012/12/creating-data-repository-using-dapper.html

Ensuite, j'ai ajouté l'expression linq au dapper sqlbuilder pour minimiser le SQL, comme dans l'exemple (requête dynamique). J'ai donc pu écrire quelque chose comme

sqlbuilder.Where(c=>c.Id == 1) or c.Id = myVar

Et maintenant je me demande si ce serait une bonne idée d'implémenter un DbContext like et DbSet et d'utiliser l'expression linq.

La question n'est pas d'implémenter un dbset complet ou dbcontext. Mais juste quelque chose qui ressemble (sans toute la complexité).

Juste un DbContext qui initialise la connexion et plusieurs tables de requêtes DbSet utilisant Dapper et une implémentation de iqueryable pour "générer" du SQL basé sur une expression de lien donnée en utilisant dapper sqlbuilder.

Après avoir lu certaines parties du code et comparé avec le framework d'entités, je pense que c'est une perte de temps car le framework d'entités le fait déjà. Mais avec dapper, vous avez tout le contrôle du fichier SQL généré et il utilisera toujours le même modèle.

Avant de commencer (pour perdre mon temps) j'aimerais savoir si c'est une bonne idée ou non.

Edit: de nombreux commentaires disent que SqlBuider n'est pas une bonne chose, alors pourquoi est-il disponible dans le projet Dapper?

Réponse acceptée

Personnellement, je dirais que c'est quelque chose qui n'est pas au cœur de ce que la bibliothèque tentera de proposer. Il y a du mérite dans cette idée, mais je crains qu'au moment où vous le fassiez, vous ayez simplement réimplémenté LINQ-to-SQL. Il existe un moyen plus simple d'y parvenir: vous utilisez simplement LINQ-to-SQL . Dapper est généralement très content de remplir les modèles L2S - c'est essentiellement ainsi que nous (les auteurs les plus avisés) l’avons utilisé (et continuons de l’utiliser) contre notre base de code L2S préexistante. Il serait également similaire à EF, etc.

Cependant, si vous voulez vraiment sortir le travail, je suis sûr que vous pourriez écrire une bibliothèque au dessus de dapper qui fait cela. Il semble juste qu'il y ait beaucoup de travail pour faire des choses qui existent déjà.


Réponse populaire

Une caractéristique clé de Dapper est la performance.

Dapper a été créé pour mapper rapidement les résultats d'un SQL simple à des objets. Et certainement pas pour permettre aux développeurs d'éviter d'écrire du code SQL. Ce n'est probablement pas une bonne idée d'utiliser le générateur SQL avec Dapper. Et pire encore, la mise en œuvre du suivi des changements. Utilisez simplement Entity Framework ou un autre ORM complet si vous avez besoin de telles fonctionnalités.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi