2009-06-17 7 views

Répondre

3

Nous avons utilisé EF pour un projet interne de taille moyenne. Il s'agissait d'une application à plusieurs niveaux avec un serveur contenant une logique métier et une couche EF autonome. Le client était une application WPF (connexion au serveur via WCF).

Il y a beaucoup à aimer à propos de l'EF, et cela peut rendre certains aspects de votre couche DA très rapides à écrire, mais une chose que je dirais est qu'elle ne prend pas très bien en charge les applications déconnectées. Cela fonctionne de manière fantastique si votre application est très autonome, a une connexion directe à la base de données et utilise 1 contexte de données, le contexte de données gère vos objets de données, extrait les données et met à jour la base de données de manière appropriée.

Dès que vous essayez de déconnecter votre client dans n'importe quelle forme de structure à n niveaux, les choses se compliquent. Vous devez gérer la déconnexion et la reconnexion de vos entités à partir des contextes de données ou vous devez en quelque sorte sérialiser le contexte de données sur le client. Vous devez utiliser plusieurs contextes de données (en partie parce que nous étions de toute façon un serveur sans état, mais aussi parce que vous utiliseriez un contexte de données unique pour plusieurs clients), et tout cela devient un peu plus compliqué à gérer. Une partie de notre solution consistait à créer des «objets de gestion» distincts créés à partir des «objets de données ef» de niveau inférieur. L'EF gèrerait alors ces objets de données (les persisterait et les chargerait à partir de la base de données, etc.), mais notre propre couche BLL gérerait les objets métier. La sauvegarde et le chargement nécessitaient une traduction des objets de niveau supérieur vers ceux de niveau inférieur ou vice versa.

Dans l'ensemble, tout a bien fonctionné, mais avec le recul, je dirais que l'EF n'est pas entièrement prêt pour le développement au niveau de l'entreprise sérieuse. J'ai entendu dire que la prochaine version de l'EF dans .net 4.0 a un meilleur support pour les applications déconnectées et n-tier, mais je ne l'ai pas fatigué personnellement.

+0

Existe-t-il un autre outil ORM que vous recommanderiez pour mieux gérer les états déconnectés? – Merritt

+0

Désolé. J'ai seulement vraiment utilisé Linq-to-sql et l'EF. Il y en a plein d'autres autour. NHibernate est populaire. Il y a une liste ici: http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#.NET Ce n'est pas que EF ne fonctionne pas totalement, c'est juste que vous devez faire votre propre plomberie pour gérer la reconnexion. Comme je le dis, si vous pouvez attendre jusqu'à. Net 4.0, on me dit que les choses vont beaucoup mieux. –

Questions connexes