2013-07-23 14 views
7

Aggiungiamo proprietà aggiuntive ai nostri oggetti sul server che non tracciamo nel database. I dati vengono restituiti al client ma l'oggetto materializzato da brezza non lo ha come proprietà. Come possiamo aggiungere proprietà ai nostri oggetti che torniamo alla brezza ma non li mappiamo nel database in cui archiviamo i dati?Includi proprietà lato server non associate all'entità quadro entità

Esempio: Classe Widget Proprietà A - Mappata al database Proprietà B - Ha l'attributo [NotMapped] in modo che non sia archiviato nel database. È calcolato al volo dal server.

Quando arriviamo l'oggetto sul client otteniamo: Widget Classe = { proprietà A: ko.observable (Rapporto A) }

proprietà B manca.

Quando guardiamo il JSON restituito dal server che vediamo:

Widget Classe = { proprietà A: Rapporto A, Proprietà B: Rapporto B }

risposta

4

Proprietà con attributi notmapped non fanno parte dei metadati generati dal EFContextProvider, quindi quelle proprietà non saranno disponibili nell'entità client brezza lato. Ma in js è possibile estendere l'entità lato client e aggiungere la proprietà all'entitàTipo stesso (con un valore iniziale impostato). Ciò assicurerà che il valore per la proprietà sia impostato correttamente quando l'oggetto json viene recuperato dal server.

http://www.breezejs.com/documentation/extending-entities

+2

arul è corretto. Questo ha funzionato per me. Leggi il documento che ha condiviso dal team di breeze. Nel costruttore del tipo di entità devi dichiarare la proprietà NotMapped con un valore predefinito utilizzando esattamente lo stesso nome dell'entità nel server (se inizia con lettere maiuscole, segui lo stesso). ad es .: Entity "TheEntity" ha la proprietà bool di NotMapped chiamata "Not". Quindi in javascript: metadataStore.registerEntityTypeCtor ('TheEntity', function() {this.Not = ko.observable (false);}); E questo è tutto, userà il valore fornito nel Ctor a meno che non abbia un valore diverso dal Server. – kzfabi

+0

Questo è così incostante! Voglio avere la possibilità di aggiungere alcune proprietà del server scrivibili NotMapped all'entità! – blazkovicz

0

questo suona come qualcosa che Ward Bell ha menzionato - forse la proprietà ha un valore nullo e per impostazione predefinita Breeze non la restituisce.

Verificare di aggiungere una classe di configurazione brezza personalizzata come menzionato qui per ottimizzare il modo in cui i valori nulli vengono restituiti in Json. Aggiungendo questa classe al progetto Web Api, Breeze lo cercherà automaticamente e lo configurerà.

http://www.breezejs.com/documentation/web-api-controller

+0

No. Non è un valore nullo. È possibile visualizzare la proprietà nei dati JSON restituiti dal client al server. Esiste un modo per accedere alle proprietà restituite al client che non sono incluse nella definizione del tipo di entità? – StewartArmbrecht

Problemi correlati