NHibernate Lazy=“Extra”

后端 未结 3 1284
伪装坚强ぢ
伪装坚强ぢ 2020-12-10 13:08

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

相关标签:
3条回答
  • 2020-12-10 13:24

    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.

    0 讨论(0)
  • 2020-12-10 13:26

    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

    0 讨论(0)
  • 2020-12-10 13:35

    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
    
    0 讨论(0)
提交回复
热议问题