ADO.net 2.0 - DataRelation e 'Cascade'

martedì 05 dicembre 2006 - 16.54

treep Profilo | Newbie

[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
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 !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5