Quantcast
Channel: Visual Basic Tips and Tricks
Viewing all articles
Browse latest Browse all 2212

[vb2015] Entity Framework e modifica campo chiave primaria

$
0
0

Salve a tutti ho un problema con una richiesta che mi è stata fatta.

Ho un programma che permette di effettuare delle modifiche su delle tabelle MySql. Il programma si collega alle tabelle tramite entity framework.

Il punto è che mi è stato chiesto di fare un programma che consenta di modificare le chiavi primarie delle tabelle in oggetto.

Le tabelle sono DV_FATTURE e DV_FATTURE_IVA i campi chiave primaria sono

 n_fattura, codicesocieta, data_fattura, tipo_documento mentre per DV_FATTURE_IVA sono

n_fattura, codicesocieta, data_fattura, tipo_documento, riga.

Ora dato che stanno trascrivendo delle fatture fatte in passato e che a volte sbagliano vorrebbero corregere la fattura senza dover riscrivere tutti i dati.

Ora so che Entity Framework non consente di modificare le chiavi primarie perciò avevo pensato di crearne una nuova ed eliminare la vecchia importando dalla vecchia tutti i  dati non modificati. Per farlo ho utilizzato il seguente codice:

 

Dim Query = From f In fatContext.dv_fatture Where f.n_fat = FatturaPass.n_fat And f.data_fat = FatturaPass.data_fat And f.codsoc = FatturaPass.codsoc And f.tipo_doc_vendita = FatturaPass.tipo_doc_vendita Select fDim FatturaModificare As New dv_fatture
FatturaModificare = Query.Single
FatturaModificare.n_fat = txbl_New_nfat.Value
FatturaModificare.codsoc = txb_New_codsoc.Text
FatturaModificare.data_fat = dtp_New_DataFat.SelectedDate
FatturaModificare.tipo_doc_vendita = txb_New_TipoDoc.Text
fatContext.dv_fatture.Add(FatturaModificare)
fatContext.dv_fatture.Remove(Query.Single)For Each iva In Query.Single.dv_fatture_iva    Dim NewIva As New dv_fatture_iva    NewIva = iva    NewIva.n_fat = txbl_New_nfat.Value    NewIva.codsoc = txb_New_codsoc.Text    NewIva.data_fatt = dtp_New_DataFat.SelectedDate    NewIva.tipo_doc_vendita = txb_New_TipoDoc.Text    fatContext.dv_fatture_iva.Add(NewIva)    fatContext.dv_fatture_iva.Remove(iva)NextDim y = fatContext.SaveChangesMessageBox.Show(y.ToString)

Sulla riga di codice

fatContext.dv_fatture.Add(FatturaModificare)

mi da sempre l'eccezione che non è possibile modificare il campo primario.

Ma se la mia FatturaModificare è nuova perchè mi dice che non posso modificare il campo primario?

Forse sto sbagliando sulla riga di codice seguente:

Dim FatturaModificare As New dv_fatture
FatturaModificare = Query.Single

In quanto lui fa sempre riferimento alla vecchia fattura. Ma come faccio a creare una nuova fattura con tutte le proprietà uguali a quella vecchia senza doverlo fare una per una?

Vi ringrazio per il vostro aiuto.


Viewing all articles
Browse latest Browse all 2212