Is there a good explanation out there on what exactly lazy=\"extra\" is capable of?
All the posts I\'ve seen all just repeat the fact that it turns references to
The lazy = extra allow to count the element of a collection without needing of fetching it, since the lazy entity is decorated with a proxy, when the client code ask for the .Count
on the collection, a proper "select count
" query is issued to the database. Without lazy=extra
the collection is read from the database.
for version 2.x it is only used to translate a collection.Count()
into a select count
and as far as i can see in the source, it will also allow the construct collection[5]
to fetch that particular entity (with index 5) instead of hydrating the whole collection.
For version 3.x i didn't see anything related in the release notes
Just tried calling Any() on a Collection Customer.Orders
mapped with lazy="extra"
customer.Orders.Any()
and the resulting SQL statement looked something like this (simplified):
SELECT *
FROM Order
WHERE CustomerId = 120
Whereas when calling
customer.Orders.Count > 0
the resulting SQL looked like this:
SELECT count(*)
FROM Order
WHERE CustomerId = 120