Fórum Chave exclusiva com dois campos no TMS Aurelius - Framework ORM para Delphi #461757

22/11/2013

0

Saudações!

Alguém sabe como definir os atributos da classe para o Aurelius saber que dois campos são uma chave/índice exclusivo em uma tabela?

As colunas são:
CompoundId e Revision.



Segue Classe em questão:
type
  [Entity]
  [Table('TabFormula')]
  [Id('FIdFormula', TIdGenerator.Guid)]
  TFormula = Class
  private
    [Column('IdFormula', [TColumnProp.Unique, TColumnProp.Required, TColumnProp.NoUpdate])]
    FIdFormula: TGuid;

    [Column('Revision', [TColumnProp.Required])]
    FRevision: Integer;

    [Column('Description', [TColumnProp.Required])]
    FDescription: String;

    [Association([TAssociationProp.Required])]
    [JoinColumn('CompoundId', [TColumnProp.Required])]
    FCompound: TCompound;

    [ManyValuedAssociation([TAssociationProp.Lazy], CascadeTypeAll)]
    [ForeignJoinColumn('FormulaId', [TColumnProp.Required])]
    FIngredients: TList<TIngredient>;

    procedure SetIdFormula(const Value: TGuid);
    procedure SetRevision(const Value: Integer);
    procedure SetDescription(const Value: String);
    procedure SetCompound(const Value: TCompound);
    procedure SetIngredients(const Value: TList<TIngredient>);
  public
    destructor Destroy; override;
    procedure Add(pIngredient: TIngredient);
    property IdFormula: TGuid read FIdFormula write SetIdFormula;
    property Revision: Integer read FRevision write SetRevision;
    property Description: String read FDescription write SetDescription;
    property Compound: TCompound read FCompound write SetCompound;
    property Ingredients: TList<TIngredient> read FIngredients write SetIngredients;
  end;
Rafael Mattos

Rafael Mattos

Responder

Posts

22/11/2013

Rafael Mattos

Achei no manual um atributo de classe para a Chave Exclusiva.

type
  [Entity]
  [Table('TabFormula')]
  [Id('FIdFormula', TIdGenerator.Guid)]
  [UniqueKey('CompoundId, Revision') // Acrescentei esse atributo.
  TFormula = Class
Responder

Gostei + 0

21/02/2014

Adriano Sérgio

Use assim:

  [Entity]
  [Table('EMPRESAFILIALUSUARIO')]
  [Id('FEmpresa', TIdGenerator.None)]
  [Id('FFilial', TIdGenerator.None)]
  [Id('FUsuario', TIdGenerator.None)]
  TEmpresaFilialUsuario = class
  private
    [Association([TAssociationProp.Lazy, TAssociationProp.Required], [TCascadeType.SaveUpdate])]
    [JoinColumn('EMPRESA_ID', [TColumnProp.Required], 'ID')]
    FEmpresa: Proxy<TEmpresa>;

    [Association([TAssociationProp.Lazy, TAssociationProp.Required], [TCascadeType.SaveUpdate])]
    [JoinColumn('FILIAL_ID', [TColumnProp.Required], 'ID')]
    FFilial: Proxy<TFilial>;

    [Association([TAssociationProp.Lazy, TAssociationProp.Required], [TCascadeType.SaveUpdate])]
    [JoinColumn('USUARIO_ID', [TColumnProp.Required], 'ID')]
    FUsuario: Proxy<TUsuario>;

    procedure SetEmpresa(const Value: TEmpresa);
    function GetEmpresa: TEmpresa;
    function GetUsuario: TUsuario;
    procedure SetUsuario(const Value: TUsuario);
    function GetFilial: TFilial;
    procedure SetFilial(const Value: TFilial);
  public
    property Empresa: TEmpresa read GetEmpresa write SetEmpresa;
    property Filial: TFilial read GetFilial write SetFilial;
    property Usuario: TUsuario read GetUsuario write SetUsuario;
  end;
Responder

Gostei + 0

15/02/2022

Roni Cunha

Use assim:

  [Entity]
  [Table('EMPRESAFILIALUSUARIO')]
  [Id('FEmpresa', TIdGenerator.None)]
  [Id('FFilial', TIdGenerator.None)]
  [Id('FUsuario', TIdGenerator.None)]
  TEmpresaFilialUsuario = class
  private
    [Association([TAssociationProp.Lazy, TAssociationProp.Required], [TCascadeType.SaveUpdate])]
    [JoinColumn('EMPRESA_ID', [TColumnProp.Required], 'ID')]
    FEmpresa: Proxy<TEmpresa>;

    [Association([TAssociationProp.Lazy, TAssociationProp.Required], [TCascadeType.SaveUpdate])]
    [JoinColumn('FILIAL_ID', [TColumnProp.Required], 'ID')]
    FFilial: Proxy<TFilial>;

    [Association([TAssociationProp.Lazy, TAssociationProp.Required], [TCascadeType.SaveUpdate])]
    [JoinColumn('USUARIO_ID', [TColumnProp.Required], 'ID')]
    FUsuario: Proxy<TUsuario>;

    procedure SetEmpresa(const Value: TEmpresa);
    function GetEmpresa: TEmpresa;
    function GetUsuario: TUsuario;
    procedure SetUsuario(const Value: TUsuario);
    function GetFilial: TFilial;
    procedure SetFilial(const Value: TFilial);
  public
    property Empresa: TEmpresa read GetEmpresa write SetEmpresa;
    property Filial: TFilial read GetFilial write SetFilial;
    property Usuario: TUsuario read GetUsuario write SetUsuario;
  end;


Como ficariam os Getters e Setters?

procedure SetEmpresa(const Value: TEmpresa);
function GetEmpresa: TEmpresa;
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar