Come utilizzare le proprietà di sola lettura definite in classi parziali (Entity Framework) su ADO.Net Data Services

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

Domanda

Ho oggetti definiti da Entity Framework a cui ho aggiunto ulteriori metodi e proprietà tramite classi parziali. Penso di aver compreso la maggior parte dei limiti nel fare questo, ma volevo confermare qualcosa che sto vedendo (o spero di imparare cosa devo fare per farlo funzionare).

Ho una classe parziale che ha quindi una proprietà di sola lettura che utilizza un paio di elementi per creare un campo calcolato di sola lettura. È stato curioso vedere che la proprietà di sola lettura non è tornata tramite ADO.Net Data Services come speravo / mi aspettavo. vale a dire, mi aspettavo di vedere le proprietà nel framework dell'entità e la proprietà definita nel codice tramite la classe parziale proveniente tramite la chiamata al servizio dati.

È questo il caso? Le classi parziali vengono completamente ignorate quando ADO.Net Data Services esegue una query per i dati? In tal caso, qual è la procedura migliore per ottenere una proprietà di tipo sola lettura su un'entità (poiché vorrei evitare di tagliare e incollare le stesse classi parziali con spazi dei nomi diversi e incollarle sia nella base di codice lato client che lato server).

È stato utile?

Soluzione

Da un post sui forum di Microsoft: ( vedi il messaggio completo qui )

  

" Penso che tu stia chiedendo " Come aggiungere a   proprietà di sola lettura a un esistente   entità esposta dall'EF   erogatori " ;? In V1, non esiste un buon modo   per fare questo. Per EF, cariciamo il file   metadati utilizzando le API di metadati EF   e quindi non facciamo alcuna riflessione.   Da qui ulteriori proprietà che tu   potrebbe essere stato aggiunto tramite una classe parziale   verrà ignorato.

     

Astoria non ha ancora un concetto di   proprietà di sola lettura. Quindi se esponiamo   qualsiasi altra proprietà che non fa parte   del modello, non sappiamo come   gestirli negli aggiornamenti. Noi no   desidera perdere i dati in modo intelligente in   anche server. "

Quindi sembra che questa sia una funzionalità che non può essere esposta tramite ADO.Net Data Services.

Altri suggerimenti

Ci sono due preoccupazioni separate qui: il modello base (EF) e il livello WCF / mex. Le tue proprietà aggiuntive non faranno parte del modello edmx, ma mi chiedo se il problema non sia più correlato all'aspetto WCF / mex.

Tuttavia, anche se ha funzionato, ADO.NET Data Services trasferisce dati , non logica . Quindi fare affidamento sulle proprietà calcolate non è un'opzione sicura: il client non avrà le formule, ma solo i valori originali.

Per scoprire qual è, prova a leggere / scrivere la proprietà (anche se la scrittura non fa nulla di utile) e assicurati che il valore abbia un attributo [DataMember], ecc.

Penso che il problema sia che con la serializzazione XML, serializza solo le proprietà con i metodi get e set. Altrimenti non potrebbe deserializzare. Aggiungi un metodo set vuoto alla tua proprietà e guarda come vai.

Rob

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top