Question

J'ai un client un serveur et une base de données db mappé au serveur avec nhibernate couramment. jusqu'ici tout va bien le client parle avec le serveur avec wcf. Je veux implémenter le chargement paresseux côté client.

Existe-t-il une solution?

Était-ce utile?

La solution

Autant que je sache, il n’existe pas de solution, le chargement différé fonctionne avec le mécanisme proxy de nhibernate, qui est très intrinsèque à sa mise en œuvre. il y avait un projet appelé Nhibernate.Remote , mais celui-ci a été abandonné. nhibernate fonctionnerait sur wcf, mais sans chargement paresseux.

Autres conseils

La nature de la WCF serait d’apprendre que vos données sont façonnées avant leur envoi, c’est-à-dire qu’elles ont déjà été récupérées et passées dans un contrat de données de quelque sorte.

Vous pourriez éventuellement fournir un paramètre sur l'appel de service initial pour indiquer si les propriétés enfants doivent être renseignées, bien que le chemin que vous parcourez restera toujours délicat.

quand j'ai compris que cela ne pouvait pas arriver, j'ai décidé de travailler avec la projection et le transformateur de résultat.

ça marche bien.

si je dois charger une collection de chargement paresseuse, je la répète sur le serveur et la renvoie au client, quand je veux mettre à jour un objet partiellement sélectionné, je dois le resélectionner dans la base de données et mettre à jour l'entité de données complète.

mais ça vaut le coup

Je suis désolé d’être pessimiste, mais faire fonctionner NHibernate avec un chargement paresseux au-dessus de la WCF n’est pas efficace .

Avec le code ci-dessous, WCF peut fonctionner avec un chargement différé:

var proxy = myObj as INHibernateProxy;
myObj = (myObj)proxy.HibernateLazyInitializer.GetImplementation();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top