Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
ADO.net 2.0 - DataRelation e 'Cascade'
martedì 05 dicembre 2006 - 16.54
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
treep
Profilo
| Newbie
3
messaggi | Data Invio:
mar 5 dic 2006 - 16:54
[nota: ho postato questo stessa richiesta di aiuto nel forum WinForms .net, Poi mi sono accorto che, probabilmente, lì ero OT. Chiedo scusa... non voglio assolutamente fare cross-post ;-)]
Bunasera a tutti.
Nel tentativo di realizzare un semplice Form di accesso ai dati del tipo Master-Details (il più classico) mi sono scontrato con un problema... boh .... saranno state le lenticchie guaste.
Parto con i requisiti: Semplicissima tabella anagrafica (con un ID contatore) + semplicissima tabella telefoni (con chiave esterna che punta all'ID contatore dell'anagrafica. Relazione uno a molti anagrafica -> telefoni. Database SQL Server Express 2005.
Lascio che VS 2005 crei il dataset per me.... imposto la datarelation graficamente, completo l'operazione con il solito trascinamento da origini dati alla superficie del Form (solite textbox per l'anagrafica, datagridview per i dettagli... tutto come da manuale 'absolute beginner')
Il dilemma è sulla datarelation.
Finchè imposto solo la relazione (nessun vincolo di chiave esterna) posso aggiungere un elemento in anagrafica, ed i relativi dettagli, che, a tutta prima risulteranno avere ID sincronizzati.
Starà a me, in fase di Update effettivo:
- Recuperare il nuovo valore di incremento automatico generato dal DB per l'ID in anagrafica.
- Impostare gli eventuali ID dei nuovi telefoni al valore ID recuperato.
- Inviare i nuovi telefoni relativi al nuovo nominativo in anagrafica al DB.
Il tutto per mantenere 'manualmente' l'integrità referenziale.
Tutto facile.
E se volessi impostare, nella datarelation, 'Relazione e vincolo di chiave esterna'?
Magari con Aggiornamenti ed Eliminazioni impostati su 'Cascade' ?
Beh, sulla carta eviterei la rogna di impostare l'integrità referenziale manualmente.
Lo faccio. Vado per inserire un nuovo elemento inanagrafica, che per il momento viene contrassegnato, che so, con ID=5.
Mi sposto sulla griglia dei telefoni... aggiungo un record... ok... vedo che l'ID è contrassegnato automaticamente come 5... perfetto.
Attenzione: PRIMA di tentare qualsiasi update, solo abbandonado (validando) la datagridview, ho un'eccezione che mi avvisa del fatto che
il FK_tblAnagrafica_tblTelefoni richiede l'esistenza dei valori delle chiavi figlio (5) nella tabella padre.
Curioso. Non sto violando l'integrità. Non sto inviando dati al database. Cosa succede?
Saluto con simpatia.
treep
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !