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.