Wep project

12 Feb '15, 10:47 AM
2,325 Views
No Forum Badges

Buongiorno,

sono alle prime armi con web ratio e sto provando a riprodurre gli esercizi svolti in classe

Partendo dalla creazione di un web project posso inserire tutte le identità che voglio con i relativi attributi ma sia l'entità che gli attributi rimangono segnati con un punto di domanda; inoltre se aggiungo una relazione di default mi mette N a N ma non mi è possibile cambiarla sia tramite tasto dx che altro, come mai?

grazie

 
x 0
Follow
Answer Answer at this question and get points!
Forum Starter - Level 3

Le Entity che hai definito, e i loro attributi, non hanno una corrispondenza nel database, cioè manca il mapping.

Hai aggiunto un database? In caso contrario, devi prima farlo. Dx nel Domain Model, poi Add->Database; nelle Properties, gli dai un nome qualsiasi, poi url (segui l'esempio!), utente e password. Il database reale  deve essere già esistente, cioè devi averlo creato fuori da webratio con il MySqlWorkbench per esempio. Nell'Outline del Domain Model, clicca sul database che hai appena definito, poi dx -> refresh: se compare un quadratino verde sull'iconcina del database, la connessione è OK.

Tornando adesso alle Entity con il '?', clicca sul bianco (per deselzionarne una eventualmente già selezionata) e poi dx -> Synchronize e segui il wizard: alla fine avrai due cose: 

- le tabelle sul database; controllale con il MySqlWorkbench o quel che usi

- il "mapping", cioè la corrispondenza delle Entity logiche in webratio con le tabelle fisiche del database.

 

Riguardo alla cardinatà delle relazioni: di default è N:N, ma seleziona la tua nuova relazione, cerca in basso a sx le Properties e scegli il primo tab, che si chiama "General": là puoi modificare le cardinalità diretta e inversa.

 

 
x 0
No Forum Badges

Grazie, ora è chiaro sia per il database sia per il tab general; solo una curiosità: come mai mi fa scegliere solo una cardinalità di tipo 1:1, 1:N (e viceversa ovviamente) e N:N ma non è presente lo 0? non potrei mai fare una cardinalità di questo tipo 0:N (le uniche due opzioni sono one e many)

 

grazie!

 
x 0
Forum Starter - Level 3

Non ho una risposta precisa su questo argomento. Tuttavia considera che avendo stabilito una relazione 1:N tra due entity, ad esempio le consuete Order e OrderItem, puoi avere un record della entity parent (un Order) che non ha record relanti nella entity child (nessun record di OrderItem).

Nella pratica, se stabilisci una relazione N:N, le funzionalità di Generate SQL o Synchronize produrranno script SQL che includono la create table di una tabella che associa le chiavi dell'una e dell'altra entity. Quando invece stabilisci una relazione 1:N, gli script SQL prodotti aggiungeranno un campo FK nella tabella child per la PK della parent: nota che questo campo non deve essere esplicitamente mappato con un attributo della entity child (nella entity OrderItem non devi mettere un attributo orderOid).

Nota ancora che in relazione alla cardinalità che definisci, lungo la relazione avrai opzioni conseguenti, tipo "single imported attribute" (da child a parent), oppure funzioni di aggregazione tipo la "count()" (da parent a child).

 

 
x 0
Answer at this question and get points!