Progettazione RESTful: più relazioni tra le stesse 2 entità

2

Sono in procinto di progettare servizi web RESTful e sono rimasto bloccato a un certo punto. Il design è molto semplice con 3 entità:

- Project
- Status
- Employee

La parte in cui ho problemi è catturare le relazioni:

- A project has a current status (1 to 1 between Project and Status).
- A project has multiple 'possible subsequent status' (1 to many between Project and Status).

Il designer di Visual Studio non consente di definire queste due relazioni diverse tra queste due entità. Sono consapevole che si tratta solo di uno strumento di modellazione, ma allo stesso tempo sono disposto a sapere se questo è l'approccio giusto.

Inoltre, con questo design, non sono sicuro di come accedere alle entità di stato utilizzando queste due relazioni.

http://serviceRootURL/Project(2)?$expand=Status // For current status
http://serviceRootURL/Project(2)?$expand=SubsequentStatus // For subsequent status

È possibile utilizzare nomi di relazioni arbitrarie con la parola chiave expand?

(Probabilmente la domanda tocca anche OData poiché sto cercando di rendere la mia libreria compatibile con OData.)

    
posta Guven 25.01.2013 - 20:27
fonte

3 risposte

1

In VS 2012 Express, sono stato in grado di modellare due relazioni tra le stesse entità separatamente in un modello EDMX. Selezionando la relazione nell'area di disegno, è possibile utilizzare il riquadro delle proprietà sulla destra per assegnare nomi e cardinalità diversi. Prestare attenzione anche al nome della proprietà genitore (nel riquadro, è la "Proprietà di navigazione di End2").

Dopo aver modellato le relazioni ed esposto il modello tramite OData, puoi utilizzare l'opzione $expand con il nome della relazione (come quello che hai mostrato) per incorporare le entità correlate nella risposta alle entità padre.

    
risposta data 30.01.2013 - 20:25
fonte
1

L'attuale "stato successivo possibile" dipende solo dallo stato attuale del progetto?

Se sì, è possibile anche modellare i possibili valori di stato come entità con 1 occorrenza per valore di stato. Ciò causerebbe un cambiamento nella relazione tra progetto e stato in n: 1 (uno stato può avere un numero qualsiasi di progetti).

Aggiungi un'altra relazione ricorsiva "possibile stato successivo" da stato a stato con cardinalità di 1: n.

Un piacevole effetto collaterale di questo è che puoi facilmente elencare i progetti con uno stato particolare iniziando dallo stato e seguendo la relazione con i progetti: -)

Non so quanto bene possa essere modellato in VS o espresso in REST, mi dispiace. Ma mi sembrerebbe un buon modello per me.

    
risposta data 05.02.2013 - 19:43
fonte
0

Come in Domain Driven Design, è possibile qualificare la relazione in base al tempo? Quindi, per un particolare periodo di tempo, avrai una relazione uno-a-uno tra Progetto e Stato. Quindi, puoi definire solo una relazione?

Spiacente, nessun indizio su REST affatto

    
risposta data 30.01.2013 - 16:19
fonte

Leggi altre domande sui tag