В настоящее время я использую специально разработанную ORM и планирую перейти на nhibernate.
В настоящее время я использую как L1 - кэширование на уровне сеанса, так и L2 - кэширование на уровне приложения.
Всякий раз, когда объект запрашивается из кэша L2 кэшем L1, он проверяет базу данных на наличие изменений с момента последней загрузки и загружает только, если она была изменена.
Могу ли я сделать это с NHibernate. Короче говоря, кеширование мне не мешает, так как оно всегда получает самые последние данные и спасает меня от создания объектов и времени загрузки.