B-Arts DocumentationIndice generale

BBaseLibraryModel - esempi

Estendere una classe generata

File generato da BStudio, da non modificare:

BClasses/BCliente.cs

File dello sviluppatore:

BClassesPartial/BCliente.cs
using System.Data;

namespace MiaBaseLibrary;

public partial class BCliente
{
  public string DescrizioneCompleta
  {
    get
    {
      return Codice + " - " + RagioneSociale;
    }
  }

  public override bool PartialMappingData(DataRow dr)
  {
    // Eventuale logica aggiuntiva dopo il mapping generato.
    return base.PartialMappingData(dr);
  }
}

Non ridichiarare proprietà come Codice o RagioneSociale se esistono già nella parte generata.

Creare e salvare un oggetto

BCliente cliente = new BCliente(connection);
cliente.Codice = "CLI001";
cliente.RagioneSociale = "Cliente dimostrativo";
cliente.Attivo = true;

bool salvato = cliente.Update();

Update() decide normalmente fra inserimento e aggiornamento usando lo stato ereditato da BBaseObject.

Caricare mediante chiave primaria

BCliente cliente = new BCliente(125, connection);

if (!cliente.IsNothing)
{
  string descrizione = cliente.RagioneSociale;
}

Il tipo e il numero dei parametri del costruttore dipendono dalla chiave primaria della tabella.

Salvare dentro una transazione esterna

connection.ApriDatabase();
connection.BeginTrans();

try
{
  bool salvato = cliente.Update(WithnewTransaction: false);
  if (!salvato)
  {
    connection.RollBackTrans();
    return;
  }

  connection.CommitTrans();
}
catch
{
  connection.RollBackTrans();
  throw;
}
finally
{
  connection.EndTrans();
  connection.ChiudiDatabase();
}

Usare una relazione oggetto

if (cliente.Provincia != null && !cliente.Provincia.IsNothing)
{
  string provincia = cliente.Provincia.Descrizione;
}

La relazione può essere caricata al primo accesso e richiede una connessione valida.

Modificare una collezione figlia

if (cliente.Recapiti != null)
{
  BClienteRecapito recapito = new BClienteRecapito(connection);
  recapito.Tipo = "EMAIL";
  recapito.Valore = "cliente@example.test";
  cliente.Recapiti.Add(recapito);
}

bool salvato = cliente.Update(SaveCollections: true);

Nomi e proprietà sono illustrativi; usare sempre quelli generati dal database reale.