Utilizzo di brezza supportato da SharePoint, come descritto in here, e utilizzando TypeScript anziché JS.Perché l'entitàAspetto degli oggetti della mia query deve essere nullo?
In una classe DataService creo un EntityManager e eseguire una query:
private servicePath: string = '/api/PATH/';
private manager: breeze.EntityManager;
constructor() {
this.init();
}
private init(): void {
this.manager = new breeze.EntityManager(this.servicePath);
}
public ListResponses(): breeze.Promise {
var query = breeze.EntityQuery.from("Responses");
return this.manager.executeQuery(query);
}
Ho poi chiamo questo dal mio modello di vista, che funziona bene:
private loadResponses(): void {
this.dataservice.ListResponses().then((data) => {
this.handleResponsesLoaded(data);
}).fail((error) => {
this.handleDataError(error);
});
}
private handleResponsesLoaded(data:any): void {
for (var i = 0; i < results.length; i++){
this.extendItem(results[i]);
}
this.renderList(results, "#tp-responses-list");
}
Ma il mio tentativo di estendere ogni articolo non riesce, a causa della voce entityAspect
è nullo:
private extendItem(item: any): void {
item.entityAspect.propertyChanged.subscribe(() => { // FAILS HERE
setTimeout(() => {
if (item.entityAspect.entityState.isModified()) {
this.dataservice.SaveChanges().then((result) => {
tracer.Trace("SaveChanged Result: " + result);
}).fail((error) => {
this.handleDataError(error);
});
}
}, 0);
});
}
Upon i nspecting la voce risultato, posso vedere è solo l'oggetto pianura dei dati, con tutte le proprietà mi sarei aspettato, ma nessuna entità bontà:
Ho appena iniziato con la brezza, quindi il modo migliore per mettere la domanda è probabilmente: cosa ho fatto di sbagliato qui?
Jay - Grazie per la pronta risposta. Sto usando i metadati estratti da edmx di un riferimento al servizio, ma ci deve essere qualcosa di sbagliato in questo: cercherò di risolverlo (ho molti tipi di entità e non voglio applicare manualmente i metadati in il cliente se posso aiutarlo). Un rapido follow-up quindi: in che modo breeze corrisponde ai metadati? Si basa sul nome del tipo o su una mappa di proprietà come un'interfaccia o ...? – JcFx
è possibile ottenere l'elenco dei tipi che il metadataStore contiene tramite il metodo getEntityTypes. Ogni tipo di entità ha una proprietà 'name' e una 'shortname', può essere abbinata. –
Lo vedrò domani mattina. Grazie ancora. – JcFx