B-Arts DocumentationIndice generale

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

  • BFramework per 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:

  1. se la chiave è presente negli appSettings dell'applicazione, usa quel valore;

  2. altrimenti cerca BAppSettings.config nella directory dell'applicazione;

  3. legge la chiave dal JSON tramite BJSON;

  4. 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 BConvert dentro MappingData;

  • può esporre proprietà oggetto per le relazioni;

  • può esporre collezioni figlie caricate su richiesta;

  • contiene BUniqueKey per confrontare e sincronizzare le entità;

  • espone operazioni di caricamento, aggiornamento ed eliminazione;

  • usa IBConnection e gli stored procedure generati;

  • espone hook partial ereditati da BBaseObject per 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.

Documenti correlati