944 messaggi dal 11 febbraio 2013
Ciao,
nella mia app ho una tabella che rappresenta come un agente può acquisite un ordine per un dato cliente per una data linea di prodotto.

Nella tabella ordini ho impostato le colonne cliente-agente-linea come fk.

Mi viene chiesto di consentire all agente di prendere ordini per linee che attualmente non tratta percui l'app non può bloccare l'agente e impedire di acquisire l'ordine.

Percui in questi casi come si fa?
Dovrei disattivare le fk in questi casi e poi riattivarle?
Oppure salvare questi ordini in una tabella diversa...oppure cosa?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


Nella tabella ordini ho impostato le colonne cliente-agente-linea come fk.

Ok, quindi se quella è foreign key vuol dire che hai un'altra tabella in cui cliente-agente-linea è una primary key. Inserisci in questa tabella la terna di valori cliente-agente-linea, in modo che la foreign key non venga violata.
Se vuoi differenziare le linee trattate da quelle non trattate, aggiungi una colonna a questa tabella che indichi la cosa.

Opzionale: lato EF la puoi trattare come colonna discriminante per due tipi di entità diverse.

ciao,
Moreno
Modificato da BrightSoul il 06 ottobre 2019 17:26 -

Enjoy learning and just keep making
944 messaggi dal 11 febbraio 2013
Ok ci avevo pensato: una volta selezionata l'immagine del brand posso fare come dici e creare la nuova 'regola'
cliente-agente-linea

Poi quando salverà l'ordine non ci saranno problemi.

Solo che sono un po confuso perchè poi non sono piu allineato con la tabella 'aziendale'.

Ho fatto un piccolo programma che sincronizza la tabella nell'app con quella aziendale e faccio in modo che coincidano mettendo il campo 'attivo' a 1 a seconda di come sta sulla tabella aziendale.

La tabella dell'app avrà sempre piu record a causa del fatto che la uso come FK però faccio in modo che i clienti attivi siano gli stessi mettendo a zero i clienti non piu attivi (cosa gestita dal commerciale)

Dici che mi incasino ?
Oppure mando una mail al commerciale dove segnalo il nuovo abbinamento.

:)

grazie Moreno
Modificato da jjchuck il 06 ottobre 2019 17:51 -
944 messaggi dal 11 febbraio 2013
Ciao Moreno,
ho aggiunto il nuovo record cliente-linea-agente ma ho dovuto farlo quando salvo l'ordine cosicchè le linee abilitate si vedano solo dopo aver appunto preso un ordine

Ho dovuto farlo nello stesso contesto di ef dove salvo l'ordine...subito prima ovviamente per le fk

però continuavo ad avere un errore sqlite 19 per RigheOrdine.Linea di vincolo non null

allora ho fatto cosi

           builder
            .HasOne(e => e.ClienteAgente)
            .WithOne(e => e.RigheOrdine)
            .HasForeignKey<RigheOrdine>(e => new { e.Cliente, e.Linea, ecc... })
            .OnDelete(DeleteBehavior.Cascade);


e l'errore è scomparso

Ma non ho capito il motivo

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.