Domanda

ho un client un server e un db db mappato al server con nhibernate fluente. Fin qui tutto bene il client parla con il server con wcf. voglio implementare il caricamento lento sul lato client.

c'è qualche soluzione là fuori?

È stato utile?

Soluzione

AFAIK non esiste una soluzione per questo, il caricamento lento funziona con il meccanismo proxy di Nhibernate che è molto intrinseco alla sua implementazione. c'era un progetto chiamato Nhibernate.Remote ma questo è stato abbandonato. nhibernate avrebbe funzionato su wcf, ma senza caricamento lento.

Altri suggerimenti

La natura di WCF sarebbe quella di imparare a modellare i tuoi dati prima dell'invio, vale a dire che sono già stati recuperati e inseriti in un contratto di dati di qualche tipo.

Probabilmente potresti fornire un parametro sulla chiamata di servizio iniziale per indicare se le proprietà del bambino dovrebbero essere popolate, anche se quanto lontano andrai sarà sempre difficile.

quando ho capito che non può succedere, ho deciso di lavorare con la proiezione e il trasformatore di risultati.

funziona bene.

se ho bisogno di caricare un po 'di raccolta di caricamento lazy, devo solo iterarlo sul server e rispedirlo al client, quando voglio aggiornare un oggetto parzialmente selezionato, devo selezionarlo nuovamente da db e aggiornare l'entità dati completa.

ma ne vale la pena

Mi dispiace essere pessimista, ma far funzionare NHibernate con caricamento lento su WCF è NON ANDARE AL LAVORO .

Con il codice seguente WCF può funzionare con caricamento lento:

var proxy = myObj as INHibernateProxy;
myObj = (myObj)proxy.HibernateLazyInitializer.GetImplementation();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top