Trysil - TWhereClause

davidlastrucci

David Lastrucci

Posted on February 19, 2024

Trysil - TWhereClause

Introduzione
Uno degli attributi disponibili in "Trysil - Delphi ORM" è [TWhereClauseAttribute].

Cerco, in questo articolo, di spiegarne l'utilità.

Database
Prendiamo ad esempio la seguente tabella del database:

CREATE TABLE Users(
  ID int NOT NULL,
  Firstname nvarchar(255) NOT NULL,
  Lastname nvarchar(255) NOT NULL,
  UserType int NOT NULL,
  VersionID int NOT NULL,
  PRIMARY KEY (ID)
);
Enter fullscreen mode Exit fullscreen mode

Stabiliamo che la colonna UserType potrà contenere i valori 0 (Insegnante) e 1 (Studente).

Aggiungiamo un indice alla tabella per ottimizzare i filtri:

CREATE INDEX Users_Index1 ON Users (UserType);
Enter fullscreen mode Exit fullscreen mode


TUser
Definiamo il modello astratto per l'entità TUser:

{ TUser }

  [TTable('Users')]
  [TSequence('UsersID')]
  TUser = class abstract
  strict private
    [TPrimaryKey]
    [TColumn('ID')]
    FID: TTPrimaryKey;

    [TColumn('Firstname')]
    FFirstname: String;

    [TColumn('Lastname')]
    FLastname: String;

    [TVersionColumn]
    [TColumn('VersionID')]
    FVersionID: TTVersion;
  strict protected
    [TColumn('UserType')]
    FUserType: Integer;
  public
    property ID: TTPrimaryKey read FID;
    property Firstname: String read FFirstname write FFirstname;
    property Lastname: String read FLastname write FLastname;
    property VersionID: TTVersion read FVersionID;
  end;
Enter fullscreen mode Exit fullscreen mode


TTeacher
Specializziamo l'entità TTeacher:

{ TTeacher }

  [TWhereClause('UserType = 0')]
  TTeacher = class(TUser)
  public
    procedure AfterConstruction; override;
  end;

// ...

procedure TTeacher.AfterConstruction;
begin
  inherited AfterConstruction;
  FUserType := 0;
end;
Enter fullscreen mode Exit fullscreen mode


TStudent
Specializziamo poi l'entità TStudent:

{ TStudent }

  [TWhereClause('UserType = 1')]
  TStudent = class(TUser)
    procedure AfterConstruction; override;
  end;

// ...

procedure TStudent.AfterConstruction;
begin
  inherited AfterConstruction;
  FUserType := 1;
end;
Enter fullscreen mode Exit fullscreen mode


Trysil
Adesso siamo in grado di utilizzare TTeacher e TStudent con Trysil come se le due entità fossero persistite su due tabelle separate, in realtà entrambe andranno ad eseguire tutte le operazioni di CRUD sulla tabelle Users del database.

Per saperne di più su Trysil - Delphi ORM visita il link al progetto:

https://github.com/davidlastrucci/Trysil

💖 💪 🙅 🚩
davidlastrucci
David Lastrucci

Posted on February 19, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Trysil - Multi-tenat API REST
trysil Trysil - Multi-tenat API REST

November 26, 2024

Trysil - TWhereClause
trysil Trysil - TWhereClause

February 19, 2024

Trysil - Delphi ORM
trysil Trysil - Delphi ORM

February 19, 2024