L'application que je construis actuellement utilise des procédures stockées et des modèles de classe fabriqués à la main pour représenter des objets de base de données. Certaines personnes ont suggéré d'utiliser Entity Framework et j'envisage de passer à cela car je ne suis pas si loin dans le projet. Mon problème est que je pense que les gens qui défendent EF ne me disent que le bon côté des choses, pas le mauvais côté :)
Mes principales préoccupations sont:
- Nous voulons une validation côté client à l'aide de DataAnnotations, et il semble que je doive de toute façon créer les modèles côté client, donc je ne suis pas sûr que EF économiserait autant de temps de codage
- Nous aimerions garder les classes aussi petites que possible lorsque vous passez sur le réseau, et j'ai lu que l'utilisation d'EF inclut souvent des données supplémentaires qui ne sont pas nécessaires
- Nous avons une couche de base de données complexe qui traverse plusieurs bases de données, et je ne suis pas sûr que EF puisse gérer cela. Nous avons une base de données commune avec des choses comme les utilisateurs, les codes d'état, les types, etc. et plusieurs instances de nos bases de données principales pour différentes instances de l'application. Les requêtes SELECT peuvent interroger et interrogeront toutes les instances des bases de données, mais les utilisateurs ne peuvent modifier que les objets qui se trouvent dans la base de données sur laquelle ils travaillent actuellement. Ils peuvent changer de base de données sans recharger l'application.
- Les modes objets sont très complexes et il y a souvent pas mal de jointures impliquées
Les arguments pour EF sont les suivants:
- Accès simultané. Je n'aurais pas à coder les chèques pour voir si l'enregistrement a été mis à jour avant chaque sauvegarde
- Génération de code. EF peut générer des modèles de classe partiels et des POCO pour moi, mais je ne suis pas certain que cela me ferait vraiment gagner beaucoup de temps car je pense que nous aurions encore besoin de créer les modèles côté client pour la validation et certaines méthodes d'analyse personnalisées.
- Vitesse de développement car nous n'aurions pas besoin de créer les procédures stockées CRUD pour chaque objet de base de données
Notre architecture actuelle se compose d'un service WPF qui gère les appels de base de données via des procédures stockées paramétrées, des objets POCO qui vont vers / depuis le service WCF et le client WPF, et le client de bureau WPF lui-même qui transforme les POCO en modèles de classe à des fins de validation et Liaison de données.
Donc ma question est, est-ce que EF a raison? Y a-t-il des pièges à propos d'EF que je ne connais pas?