Existe-t-il des pièges lors de l'utilisation de Castle ActiveRecord / NHibernate avec WCF?

StackOverflow https://stackoverflow.com/questions/616314

Question

Le type de flexibilité qu'Activerecord donne à notre conception de base de données, nous l'examinons pour notre DAL et construisons un modèle autour de celui-ci. Nous allons créer un service WCF en plus de tout cela. Y at-il des pièges ou des problèmes de compatibilité lors de l’utilisation de Castle Activerecord basé sur NHibernate? Spécialement en ce qui concerne le DataContractSerializer utilisé par WCF. Étant donné qu'ActiveRecord n'utilisera pas IQueryable, est-ce trop à manquer?

Était-ce utile?

La solution

Objet sérialisé = objet détaché. Et une fois que vous envoyez un objet sur le fil via WCF, c'est ce que vous avez.

Donc, le gros problème, c’est que vous allez vous occuper de NHibernate avec WCF lorsque vous utilisez des objets isolés, ce qui vous oblige à écrire votre code un peu différemment. Vous perdez les capacités de mise en cache et les fonctionnalités de chargement paresseux de NHibernate. Vous devez pré-charger vos agrégats avant de les expédier par câble.

Bien sûr, tout est discutable si vous utilisez plutôt des objets de transfert de données, mais puisque vous avez mentionné ActiveRecord, je suppose que ce n'était pas prévu.

Je suis peut-être très loin de la base ici. Espérons qu'un gourou d'ActiveRecord puisse donner plus de détails.

Autres conseils

Bien que cela ne soit pas spécifique à la WCF et à Castle Activerecord, je vous avertis.

Assurez-vous de ne pas définir CASCADING DELETE au niveau de la couche de persistance. Laissez ActiveRecord gérer celles qui vous intéressent, sinon vous rencontrerez des erreurs gênantes plus tard (on reçoit 0 attendu sur 1), tapez des choses qui ne sont pas très claires.

De plus, si vous devez effectuer une suppression en bloc fréquente, vous voudrez peut-être faire preuve de prudence lors de l'utilisation d'ActiveRecord, car Castle Implementation ne prend pas en charge la suppression en bloc, mais nécessite à la place une boucle coûteuse sur chaque élément et des suppressions individuelles. se produire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top