lazy = "proxy" означает, что NHibernate будет лениво инициализировать экземпляры вашего класса;
Когда NHibernate извлекает экземпляр вашего класса из базы данных, он в этом случае не будет возвращать «реальный» экземпляр вашего класса, а скорее даст вам прокси. То есть он вернет объект другого типа, более конкретно, объект, который является подклассом вашего класса (сгенерированный NHibernate посредством генерации IL).
Объект, который вам будет предоставлен, является прокси, и единственным заполненным свойством является свойство Id. Как только вы вызовете другое свойство в экземпляре, NHibernate инициализирует прокси и извлечет из базы данных все другие свойства / коллекции (кроме тех, которые загружаются с отложенным доступом).
Lazy = "true" используется на другом уровне. Тогда как lazy = "proxy" используется на уровне класса, lazy = "true" используется на уровне коллекции. Это означает, что коллекция должна загружаться лениво.