Umgang mit vielen zu vielen Beziehungen in Knockout Viewmodels

8

Ich habe in meinem Schema eine Viele-zu-Viele-Beziehung zwischen zwei Tabellen Service und Mitarbeiter ( Ein Service kann von mehreren Mitarbeitern ausgeführt werden und ein Mitarbeiter kann mehrere ausführen Dienstleistungen . Ich habe die Junction-Tabelle ServiceEmployee zum Erstellen dieser Beziehung verwendet.

Ich verwende Knockout auf der Client-Seite. Die Knockout-Viewmodels werden durch das knockout.mapping-Plugin vom serverseitigen Viewmodel erstellt. Auf Serverseite habe ich 3 Viewmodel, die sind:

  1. EmployeeModel ( enthält die Liste von ServiceEmployeeModel )

  2. ServiceModel ( enthält die Liste von ServiceEmployeeModel )

  3. ServiceEmployeeModel ( enthält ServiceId, EmployeeId) [kann Mitarbeiter nicht einschließen und Dienstobjekt, um die Selbstreferenzschleife auf der Clientseite zu vermeiden]

Jetzt auf der Client-Seite habe ich 3 Module:

Mitarbeitermodul

%Vor%

Servicemodul

%Vor%

ServiceEmployee-Modul

%Vor%

Der Ansatz, den ich benutze, funktioniert, aber ich denke, dass es einen besseren Weg geben sollte, mit einem solchen Szenario umzugehen. Weil wir bei diesem Ansatz Services Mitarbeitern oder Mitarbeitern den Dienst zuweisen müssen müssen wir das Array employees and services manuell aktualisieren, und ich denke, es sollte einen besseren Weg geben, damit knockout diese Arrays für mich aktualisiert.

Berechnetes Observable mag die Lösung sein, aber ich kann es nicht verstehen. Kann mir bitte jemand helfen, dieses Problem zu lösen?

    
user1740381 23.03.2014, 10:28
quelle

1 Antwort

0

Lösung A:

Vielleicht möchten Sie brise ausprobieren: Ссылка sie unterstützen nicht viele bis viele Beziehungen direkt, aber wenn Sie das Navigaiton-Objekt verfügbar machen so:

%Vor%

Breeze bietet Mechanismen, mit denen Sie automatisch verfolgen können, welche Mitarbeiter und Dienste in Beziehung zueinander stehen. Dies ermöglicht Ihnen Folgendes:

%Vor%

Wenn Sie Brise verwenden möchten, müssen Sie die anderen Brise-Funktionen wie das Laden und Speichern von Daten usw. lesen.

Lösung B:

Sie können sich die ignore-Eigenschaft des ko.mapping-Plugins ansehen, zum Beispiel:

%Vor%

Wenn ich den Mapping-Teil richtig geschrieben habe (ich bin mir nicht sicher, ob ich das gemacht habe, klicken Sie hier für weitere Details Ссылка ) Wenn Sie dann Ihr Mitarbeitermodell auflösen, sollte das Mapping-Plugin Ihre ServiceObjects-Berechnung ignorieren

Sie können auch eine Schreibfunktion hinzufügen, um sie zu Ihrem Array hinzuzufügen, indem Sie Objekte aus dem Services-Array als Reaktion auf Änderungen im ServiceObjects-Array hinzufügen und daraus entfernen.

Lösung C:

Sehen Sie sich diese andere Lösung an: Knockout JS ObservableArray mit Viele-zu-viele-Beziehungen

    
cwohlman 01.04.2014 13:18
quelle

Tags und Links