J'ai étudié les soi-disant «Micro ORM» comme Dapper et (dans une moindre mesure car il repose sur .NET 4.0) Massif car ceux-ci pourraient être plus faciles à mettre en œuvre au travail qu'un ORM à part entière depuis notre système actuel est fortement tributaire des procédures stockées et nécessiterait une refactorisation importante pour fonctionner avec un ORM comme NHibernate ou EF. Quel est l'avantage d'utiliser l'un d'eux sur un ORM complet? Il semble que juste une couche mince autour d' une connexion de base de données que les forces fixes que vous écriviez SQL brute - peut - être que je me trompe , mais m'a toujours dit la raison de ORM en premier lieu est si vous n'avez à écrire SQL, il pourrait être généré automatiquement; en particulier pour les jointures multi-tables et les relations de mappage entre les tables, ce qui est difficile à faire en SQL pur mais trivial avec un ORM.
Par exemple, en regardant un exemple de Dapper:
var connection = new SqlConnection(); // setup here...
var person = connection.Query<Person>("select * from people where PersonId = @personId", new { PersonId = 42 });
En quoi est-ce différent de l'utilisation d'une couche de données ADO.NET contrôlée manuellement, sauf que vous n'avez pas à écrire la commande, définir les paramètres et je suppose que mapper l'entité à l'aide d'un générateur. Il semble que vous puissiez même utiliser un appel de procédure stockée comme chaîne SQL.
Y a-t-il d'autres avantages tangibles qui me manquent ici où un Micro ORM a du sens à utiliser? Je ne vois pas vraiment comment il enregistre quoi que ce soit par rapport à la "vieille" façon d'utiliser ADO.NET, sauf peut-être quelques lignes de code - vous devez encore écrire pour comprendre quel SQL vous devez exécuter (ce qui peut devenir poilu) et vous devez toujours mapper les relations entre les tables (la partie avec laquelle les ORM à mon humble avis aident le plus).
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });
, puisdog.First().Age
pour accéder aux propriétés.Réponses:
Avantages:
C'est à peu près ça, pour être honnête. Vous avez un wrapper très léger pour vos connexions sql qui fera la conversion d'objet pour vous. Vous pouvez, bien entendu, affiner les requêtes sans avoir à traiter avec du SQL généré automatiquement.
Les inconvénients:
Ils ont leur place, et ils sont un outil très efficace qui peut enlever une partie du "travail de l'âne" aux développeurs lorsqu'ils interagissent avec la base de données, mais en réalité, ils ne peuvent tout simplement pas prendre la place d'un ORM complet à grande échelle système pour les requêtes qui ne sont pas critiques en termes de performances, simplement en raison de l'augmentation des coûts de maintenance.
Si vous rencontrez des difficultés avec les performances sur les requêtes de base de données, je suggère qu'il serait préférable d'utiliser ces cadres de mappage avec les procédures stockées uniquement, afin d'obtenir une indication au moment de la compilation de la validité de votre SQL (plus les avantages de performances supplémentaires) .
la source
Dans le site Web de micro ORM PetaPoco, il explique certains avantages avec d'autres ORM. pour expliquer plus
la source
Je crois que c'est le principal avantage d'un Micro-ORM, pour obtenir les autres avantages d'un ORM dont vous auriez besoin pour en utiliser un à part entière. Cela et le code est relativement plus petit, donc si vous avez besoin de le personnaliser, ce serait plus facile.
la source