![]() |
Datenbank: Oracle • Version: 12 • Zugriff über: TMS Aurelius
Abfragen mittels Join über TMS Aurelius
Moin,
ich hoffe, jemand von euch kennt sich mit dem Framework aus. Wir benutzen ganz neu Aurelius und bisher hat auch alles wunderbar funktioniert. Allerdings habe ich jetzt das Problem Daten über Aurelius abzurufen, wo sich die Where-Spalten in unterschiedlichen Tabellen befinden. Ich bekomme dann immer die Fehlermeldung: Zitat:
Delphi-Quellcode:
Das ist der entsprechende Teil der Entities die ich nutze:
FManager.Find<TBkpo>.Where(Linq['kundennummer'] = aKundennummer).Where(Dic.Vg.MANDANTREFERENZID = aReferenz).Where(Dic.Vg.MANDANTVORGANGID = aKundenvorgangid).OrderBy('datum', false).OrderBy('posid', False).List;
Delphi-Quellcode:
Nicht wundern, ich hab die Entities etwas zusammengekürzt und nur das aufgeschrieben, was für dieses Query benötigt wird. Alle anderen Properties, IDs und Uniques hab ich weggelassen.
[Entity]
[Table('BKPO')] [Id(...)] TBkpo = class private [Column('KUNDENNUMMER', [TColumnProp.Required])] FKUNDENNUMMER: string; [Association([TAssociationProp.Lazy, TAssociationProp.Required], CascadeTypeAll - [TCascadeType.Remove])] [JoinColumn('VGFK_KUNDENNUMMER', [TColumnProp.Required], 'KUNDENNUMMER')] [JoinColumn('VGFK_VORGANGID', [TColumnProp.Required], 'VORGANGID')] [JoinColumn('VGFK_VERSIONID', [TColumnProp.Required], 'VERSIONID')] FVorgang: Proxy<TVg>; function GetVorgang: TVg; procedure SetVorgang(const Value: TVg); public property Kundennummer: string read FKUNDENNUMMER write FKUNDENNUMMER; property Vorgang: TVg read GetVorgang write SetVorgang; [Entity] [Table('VG')] [Id(...)] TVg = class private [Column('KUNDENNUMMER', [TColumnProp.Required])] FKUNDENNUMMER: string; [Column('VORGANGID', [TColumnProp.Required])] FVORGANGID: Double; [Column('VERSIONID', [TColumnProp.Required])] FVERSIONID: Double; [Column('MANDANTREFERENZID', [], 50)] FMANDANTREFERENZID: string; [Column('MANDANTVORGANGID', [], 50)] FMANDANTVORGANGID: string; public property Kundennummer: string read FKUNDENNUMMER write FKUNDENNUMMER; property Vorgangid: Double read FVORGANGID write FVORGANGID; property Versionid: Double read FVERSIONID write FVERSIONID; property Mandantreferenzid: string read FMANDANTREFERENZID write FMANDANTREFERENZID; property Mandantvorgangid: string read FMANDANTVORGANGID write FMANDANTVORGANGID; end; Und das hier ist das betroffene Dictionary das ich abrufe:
Delphi-Quellcode:
Hat vielleicht jemand ne Ahnung was ich da falsch mache? Wenn noch irgendwelche Infos fehlen, reiche ich die natürlich nach.
IDictionary = interface(IAureliusDictionary)
function Vg: IVgDictionary; end; TDictionary = class(TAureliusDictionary, IDictionary) public function Vg: IVgDictionary; end; IVgDictionary = interface(IAureliusEntityDictionary) function KUNDENNUMMER : TLinqProjection; function VORGANGID : TLinqProjection; function VERSIONID : TLinqProjection; function MANDANTREFERENZID : TLinqProjection; function MANDANTVORGANGID : TLinqProjection; end; TVgDictionary = class(TAureliusEntityDictionary, IVgDictionary) public function KUNDENNUMMER: TLinqProjection; function VORGANGID: TLinqProjection; function VERSIONID: TLinqProjection; function MANDANTREFERENZID : TLinqProjection; function MANDANTVORGANGID : TLinqProjection; end; { TVGDictionary } function TVGDictionary.KUNDENNUMMER: TLinqProjection; begin Result := Prop('KUNDENNUMMER'); end; function TVgDictionary.MANDANTREFERENZID: TLinqProjection; begin Result := Prop('MANDANTREFERENZID'); end; function TVgDictionary.MANDANTVORGANGID: TLinqProjection; begin Result := Prop('MANDANTVORGANGID'); end; function TVGDictionary.VERSIONID: TLinqProjection; begin Result := Prop('VERSIONID'); end; function TVGDictionary.VORGANGID: TLinqProjection; begin Result := Prop('VORGANGID'); end; Viele Grüße Maliko |
AW: Abfragen mittels Join über TMS Aurelius
Ohne jetzt Ahnung von Aurelius zu haben - wäre das Problem nicht einfach zu umgehen durch Verwendung eines Views auf Datenbankebene?
|
AW: Abfragen mittels Join über TMS Aurelius
Ich habe leider das letzte Mal vor 5 Jahren intensiver mit Aurelius gearbeitet. Und auch nie das TAureliusdictionary eingesetzt - das gab es damals nicht. Warum verwendest Du nicht
Delphi-Quellcode:
.Where(Linq['MANDANTREFERENZID'] = aReferenz)
|
AW: Abfragen mittels Join über TMS Aurelius
Der TMS Support ist wirklich gut+schnell, dort solltest du eine rasche Antwort bekommen.
Sonst meine ich im Kopf zu haben, dass du mit Find<>.CreateAlias arbeiten muss, um die gejointen Tabellen nachzubilden. |
AW: Abfragen mittels Join über TMS Aurelius
Zitat:
Zitat:
Zitat:
Zitat:
|
AW: Abfragen mittels Join über TMS Aurelius
Zitat:
Delphi-Quellcode:
FManager.Find<TBkpo>.CreateAlias('Vorgang', 'vg').Where(Linq['kundennummer'] = aKundennummer).Where(Linq['vg.mandantreferenzid'] = aReferenz).Where(Linq['vg.mandantvorgangid'] = aKundenvorgangid).OrderBy('datum', false).OrderBy('posid', False).List;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz