BBaseLibraryModel - domande degli sviluppatori
Dove devo modificare una classe generata?
Mai dentro BClasses. Creare o modificare la parte omonima in BClassesPartial, con lo stesso namespace e il modificatore partial.
Perché non posso modificare BClasses?
BStudio può rigenerare e sostituire quei file. Qualsiasi modifica manuale potrebbe andare perduta.
Posso aggiungere proprietà o metodi?
Sì, nella parte partial manuale. Non duplicare membri già presenti nella parte generata.
Posso aggiungere un costruttore personalizzato?
Sì, nella parte partial, richiamando un costruttore base o generato coerente con il caricamento desiderato.
Come personalizzo il mapping?
Usare PartialMappingData(DataRow) nella parte manuale e richiamare l'implementazione base secondo il contratto di BBaseObject.
Come aggiungo parametri prima del salvataggio?
Usare l'hook PartialUpdate() quando disponibile, invece di duplicare tutto Update().
Come eseguo logica dopo un salvataggio riuscito?
Usare UpdatePlus() quando disponibile nella classe base e nella versione generata.
Come capisco se un oggetto è stato trovato?
Controllare IsNothing, ereditato da BBaseObject.
Update inserisce o aggiorna?
Normalmente inserisce quando IsNothing è vero oppure ForceInsert è richiesto; altrimenti aggiorna.
Update salva anche le collezioni?
Sì quando la classe le prevede e SaveCollections è true.
Posso usare una transazione già aperta?
Sì, passando WithnewTransaction: false e gestendo apertura, commit, rollback e chiusura all'esterno.
Perché una proprietà relazione è null o non si carica?
Verificare che l'istanza abbia una connessione valida e che la chiave esterna sia valorizzata. Le relazioni sono normalmente caricate su richiesta.
Perché alcune relazioni hanno JsonIgnore?
Per evitare serializzazioni ricorsive, caricamenti indesiderati o grafi troppo estesi. Non rimuoverlo automaticamente.
Come scelgo il database della libreria?
Configurare la chiave indicata da K_KEY_DBAPP, normalmente DB_Library, negli appSettings oppure in BAppSettings.config.
Posso usare la libreria da più front-end?
Sì. È progettata per essere condivisa da applicazioni web, API, servizi, console e Windows Forms senza dipendere dalla loro UI.
