le problème de charge paresseuse nhibernate cross machine
-
10-07-2019 - |
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?
La solution
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();