BBaseLibraryModel
Scopo
BBaseLibraryModel è il modello della libreria back-end condivisa di un'applicazione B-Arts. Ospita le classi persistenti generate da BStudio e la logica applicativa riutilizzabile da Web API, Blazor, Windows Forms, servizi e applicazioni console.
La libreria deve rimanere indipendente dall'interfaccia utente. Non deve contenere pagine, form o controlli specifici del front-end.
Dipendenze
BFrameworkper classi base, connessioni, conversioni, configurazione e funzioni statiche.Database applicativo mappato dalle classi generate da BStudio.
File di configurazione dell'applicazione ospitante per individuare il database della libreria.
Struttura prevista
BBaseLibraryModel/
|-- BClassesPartial/
|-- Moduli/
| `-- ModGenerale.cs
|-- Documentations/
`-- BBaseLibraryModel.csproj
Nel template appena creato BClasses non è ancora presente: viene creata automaticamente da BStudio quando lo sviluppatore genera le prime classi persistenti. BClassesPartial, invece, è la cartella predisposta per le personalizzazioni manuali.
BClasses
Viene creata da BStudio e contiene le classi partial generate a partire dalle tabelle e dalle relazioni del database.
Regole obbligatorie:
non creare qui personalizzazioni manuali;
non correggere qui una classe generata;
non aggiungere membri destinati a sopravvivere a una rigenerazione;
considerare ogni file sostituibile da BStudio.
BClassesPartial
Contiene il codice scritto dallo sviluppatore per estendere le classi generate.
La parte manuale deve avere:
lo stesso namespace della classe generata;
lo stesso nome;
il modificatore
partial;soltanto membri aggiuntivi, senza duplicare quelli già generati.
Moduli/ModGenerale.cs
Centralizza il nome della chiave di configurazione contenente il database della libreria. La convenzione di riferimento è DB_Library; un'applicazione può adottare una chiave differente modificando la costante del proprio progetto.
La risoluzione segue questo ordine:
se la chiave è presente negli
appSettingsdell'applicazione, usa quel valore;altrimenti cerca
BAppSettings.confignella directory dell'applicazione;legge la chiave dal JSON tramite
BJSON;se file o chiave non esistono, genera
FileNotFoundException.
Classi generate da BStudio
Una classe generata normalmente:
deriva da
B.BBaseClass.BBaseObject;implementa
IEquatable<T>;espone proprietà corrispondenti alle colonne;
usa
BConvertdentroMappingData;può esporre proprietà oggetto per le relazioni;
può esporre collezioni figlie caricate su richiesta;
contiene
BUniqueKeyper confrontare e sincronizzare le entità;espone operazioni di caricamento, aggiornamento ed eliminazione;
usa
IBConnectione gli stored procedure generati;espone hook partial ereditati da
BBaseObjectper la personalizzazione.
La struttura completa è descritta in BBaseLibraryModel.CLASS_STRUCTURE.md.
Configurazione della connessione
Le classi possono ricevere una IBConnection appartenente all'applicazione ospitante. ChangeConnection mantiene la configurazione della connessione ma, quando necessario, ne clona setting e istanza sostituendo NomeDatabase con quello della libreria.
Questo consente alla libreria di usare il proprio database senza perdere provider e altre impostazioni della connessione ricevuta.
