BlogAll Blog Posts | Next Post | Previous Post
Monday, January 30, 2017Most examples and quick-start tutorials about ORM frameworks explain how to insert, update and retrieve single entities in the database. But not many of them go further and show how to perform a query in the database. Maybe because that's something that the developer will only need after many data is inserted, and it's something that is only heavily needed when the application development is at a more advanced stage. However, it's a very important feature, and that's why "LINQ Expressions and Paging" is my #5 feature of My Top 10 Aurelius Features.
The reason for that is because you can really query your entities in a object-oriented way. It's not some SQL-like string you build, or SQL WHERE statement that you simply inject. It's really about querying object properties, comparing their values in Pascal (not in database), and using Pascal syntax to build the queries. Take a look at this example:
That's an example of filtering by Birthday property using logical operators "and", "or", how you can use parenthesis and have Delphi give you compile errors if expression is wrongly constructed. And of course you have extra expressions like "Contains", "In", etc.. All in Pascal.
MyCustomers := Manager.Find<TCustomer> .Where( ( (Linq['Birthday'] > EncodeDate(1981, 10, 10)) and (Linq['Birthday'] < EncodeDate(1986, 2, 2)) ) or ((Linq['Sex'] = tsFemale) or Linq['Sex'].IsNull) or Linq['Name'].Contains('Walker') or Linq['Status']._In([TCustomerStatus.Active, TCustomerStatus.Prospect) ) .OrderBy('Name') .List;
Finally, a small feature of LINQ filtering that I enjoy a lot: paging. It's very simple to use and very handy:
The code above in theory should bring all customers, but will only bring 10 customers, skipping the first 50 in the specified order. This is great for bringing a long list but in parts, page by page. And of course you can use it with any criteria you specify, like the complex one illustrated above in this post.
MyCustomers := Manager.Find<TCustomer> .Take(10).Skip(50) .OrderBy('Name') .List;
To see in details how LINQ expressions and paging works, watch the video above, 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.
All Blog Posts | Next Post | Previous Post