Riportare modifiche dataSet tipizzato su DB

mercoledì 06 ottobre 2010 - 16.32
Tag Elenco Tags  C#  |  .NET 2.0  |  Windows XP  |  Visual Studio 2005  |  SQL Server 2005

skraus Profilo | Junior Member

Salve,

in un applicazione asp.net ho un dataset tipizzato, al cui interno sono presenti più dataTable e relativi TableAdapter.

Mediante del codice c# vado a creare o modificare dei dataRow nei relativi dataTable.

Il problema mi si presenta nel momento in cui voglio riportare le modifiche operate sui dati disconnessi all'interno del db. Come prima cosa eseguo l'insert dei record rispettando i vincoli impostimi dalle relazioni dei dati tra i vari dataTable.

Nel primo dataTable c'è un campo di chiave primaria numerico autoincrement. Nel momento in cui faccio l'insert dei nel DT il campo assume un valore fittizio (partendo da 1), poi quando chiamo il metodo update del relativo TableAdapter, il campo acquisisce il valore reale utilizzato dal DB, in quanto restituitogli dalla StoredProcedure che esegue l'insert.

I record relazionati al DT aggiornato, che hanno nella loro struttura il campo di chiave esterna restano fissi sul valore precedente (ad esempio 1) e non si aggiornano.

Ho provato a modificare le impostazioni della relazione che lega i due DT, impostando Relazione e vincolo di chiave esterna, ed impostando come azione sull'aggiornamento Cascade (aggiornamento a catena) e come regola di Accettazione/Rifiuto la stessa cosa. In tal modo però dopo aver eseguito l'update sui record da aggiungere per la prima tabella, sulla tabella relazionata i record che erano contrassegnati come da aggiungere diventano Unchanged. Di vantaggio ottengo che il campo di chiave esterna riceve il valore aggiornato.

Dov'è che sbaglio ? grazie
Sk

================================================
Ho risolto.

Come prima cosa ho impostato, nel dataset tipizzato, sui campi chiave auto incrementanti come valore di partenza 0 e come auto increment -1.

Poi sempre sul ds tipizzato ho configurato i dataRelation, configurando per l'update l'aggiornamento dei campi a caduta.

Per il resto tutto resta come descritto, ossia creare delle collection di DataRow, 1 per ogni dataTable, mediante il metodo Select e poi darle in pasto al corrispondente metodo Update.

Ciao alla prox.
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5