B-Arts DocumentationIndice generale

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 file partial creati 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 == true indica che l'oggetto non è stato inizializzato da una riga valida oppure è un nuovo oggetto non ancora persistito.

  • Connection contiene la connessione associata, se presente.

  • ExceptionLists raccoglie gli errori intercettati durante l'inizializzazione e il mapping.

  • ForceInitializeObject forza IsNothing a false e 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 un DataRow quando implementato.

  • GetNewDataRow: fornisce la struttura usata da FillDataRow quando necessario.