2017-11-06 4 views
0

Ich bin neu in Breeze.js, aber wirklich genießen Sie es bisher. Ich stieß auf ein Problem mit der Aktualisierung einer Datenbank mit Breeze.js, wenn Sie nur einen Teil der Spalten eines Modells auswählten.Abrufen einiger Spalten aus der Datenbank mit Breeze.js, und immer noch in der Lage sein, Datenbank zu aktualisieren

Wenn ich diese Aussage lautete:

$scope.emFac.entityQuery.from('Company');

das Unternehmen Einheit passt meine EF Einheit, werden alle Spalten, erzeugt entityAspect und alles funktioniert gut, wenn Datenbank aktualisiert:

enter image description here

Allerdings, wenn ich nur einen Teil davon abrufen In den entsprechenden Model-Spalten gibt Breeze.js ein anonymes Objekt mit den angegebenen Eigenschaften (das Abrufen der Daten funktioniert, aber nicht das Aktualisieren) ohne das EntityAspect zurück, das für das Verfolgen von Änderungen verwendet wird. Hier

ist der Code mit select-Anweisung:

$scope.emFac.entityQuery.from('Company').select('companyId, displayName');

Gibt es eine Möglichkeit nur einige Spalten von EF Modell Spalten abzurufen, und immer noch verfolgen Änderungen mit Breeze.js, benötigt für Datenbankaktualisierungen?

enter image description here

Antwort

0

Wie Sie entdeckt haben, Breeze behandelt die eingehenden Daten als einfache Objekte anstelle von Entitäten, wenn Sie select verwenden.

Zur Auswahl stehen:

  1. auf dem Server ein Objekt CustomerLite oder ähnliches erstellen, und einen Server-Endpunkt, die für select diejenigen, ohne die Notwendigkeit zurück; OR

  2. auf dem Client die Ergebnisse aus der Abfrage erhalten und schaffen Einheiten von jedem Objekt, mit dem Status Unchanged

Beispiel # 2:

var entities = []; 
em.executeQuery(customerProjectionQuery).then(queryResult => { 
    queryResult.results.forEach(obj => { 
    // obj contains values to initialize entity 
    var entity = em.createEntity(Customer.prototype.entityType, obj, EntityState.Unchanged); 
    entities.push(entity); 
    }); 
}) 

So oder so, werden Sie Sie müssen sicherstellen, dass der Endpunkt saveChanges auf dem Server die abgeschnittenen Kundenobjekte speichern kann, ohne die anderen Felder zu löschen.

Verwandte Themen