Thursday, February 09, 2017I consider Aurelius Dataset (TAureliusDataset) a hidden gem of TMS Aurelius. Well, not exactly "hidden" because it's a significant part of it to deserve its own chapter in the Aurelius documentation, but in the sense that it's different from the normal ORM "core" which is update, insert, delete, select, query, etc.. And for that it's #4 of My Top 10 Aurelius Features.
The first misunderstanding about the TAureliusDataset is confusing its usage with the regular way we use Delphi datasets. I've been in discussions in forums with people that were blaming the usage of dataset, because it's not "good practice", because logic should be in the controller/model, etc., etc..
The point is Aurelius Dataset is for data binding. It's not about retrieving data. You will retrieve data the same way with or without the dataset. Your logic, controller and model will still be isolated. But when it comes to show or edit data of an entity in a visual form, you don't have to manually do things like this:
or even worse, to populate a grid or list (pseudo-code):
edCustomerName.Text := Customer.Name; edCustomerCity.Text := Customer.City;
that's tiresome, repetitive and not necessary with Aurelius Dataset. You just set the "data" of the dataset, which are your objects:
Grid.Clear; for Customer in Customers do begin CurrentRow := Grid.AddRow; Grid.Columns[0, CurrentRow] := Customer.Name; Grid.Columns[1, CurrentRow] := Customer.City; end;
and you bind the dataset to data ware controls! Or to regular controls use live bindings. Or provide the dataset to some report tool.
The coolest thing about the Aurelius Dataset is that its minor features and high integration with Aurelius. It's not just a generic binder between Delphi objects and controls. But it handles smoothly a lot of specific Aurelius features like:
Associations and its sub-properties
Master-Detail (many-valued association as nested datasets)
and provide the regular dataset mechanisms but adapted to the object-oriented approach, like:
And finally, it handles paging and fetching smoothly as well. You can have a criteria that is retrieved page by page on demand, avoiding all objects to be retrieved at once, and at the same time avoiding a cursor to be open to the database!
Watch the video above to see Aurelius Dataset in action, and if you want to get notified about upcoming videos, subscribe to our YouTube channel!
Wagner R. Landgraf
This blog post has not received any comments yet.
Previous | Next | Index