BBaseObject - Esempi
Ruolo nelle classi generate da BStudio
Le classi di mapping generate da BStudio derivano da BBaseObject e sono dichiarate partial per consentire allo sviluppatore di estenderle senza modificare il codice generato.
La separazione prevista è obbligatoria:
BClasses: contiene i file generati da BStudio;BClassesPartial: contiene i filepartialcreati e mantenuti dallo sviluppatore.
I file presenti in BClasses non devono essere modificati manualmente. Una successiva generazione effettuata con BStudio può sovrascriverli e causare la perdita di qualsiasi modifica locale.
Le personalizzazioni, le proprietà aggiuntive, gli override e i metodi applicativi devono essere inseriti esclusivamente nella corrispondente classe partial collocata in BClassesPartial.
Il template BTemplateBaseLibraryNET utilizza quattro costruttori ricorrenti:
public BSystem() : base()
{
}
public BSystem(IBConnection connection) : base(connection)
{
}
public BSystem(DataRow row, IBConnection connection) : base(row, connection)
{
}
public BSystem(int id, IBConnection connection)
: base(
"BSP_sysSistemi_SELECT",
connection,
connection.NewDBDataParameter("@ID", id))
{
}
Esempio minimo di classe derivata
using B.BBaseClass;
using B.BInterfaces;
using B.BStatics;
using System.Data;
public partial class BSystem : BBaseObject
{
private const string K_SP_SELECT = "BSP_sysSistemi_SELECT";
public BSystem() : base()
{
}
public BSystem(IBConnection connection) : base(connection)
{
}
public BSystem(DataRow row, IBConnection connection) : base(row, connection)
{
}
public BSystem(int id, IBConnection connection)
: base(K_SP_SELECT, connection, connection.NewDBDataParameter("@ID", id))
{
}
public bool Active { get; set; }
public override bool MappingData(DataRow row)
{
ID = BConvert.ToInt(row["ID"]);
Descrizione = BConvert.ToString(row["Descrizione"]);
Active = BConvert.ToBool(row["Attivo"]);
return PartialMappingData(row);
}
}
MappingData è obbligatorio. Le conversioni devono utilizzare BConvert per mantenere le convenzioni di valori nulli e predefiniti dell'ecosistema.
Stato dell'oggetto
IsNothing == trueindica che l'oggetto non è stato inizializzato da una riga valida oppure è un nuovo oggetto non ancora persistito.Connectioncontiene la connessione associata, se presente.ExceptionListsraccoglie gli errori intercettati durante l'inizializzazione e il mapping.ForceInitializeObjectforzaIsNothingafalsee deve essere usato solo quando il chiamante conosce lo stato reale dell'oggetto.
Hook previsti
PartialMappingData: estende il mapping generato.PartialUpdate: viene richiamato prima della persistenza nelle classi generate.UpdatePlus: viene richiamato dopo una persistenza riuscita.ChangeConnection: consente di adattare o sostituire la connessione.InverseMappingData: copia le proprietà dell'oggetto in unDataRowquando implementato.GetNewDataRow: fornisce la struttura usata daFillDataRowquando necessario.
