NHibernate is not the best choice when you need to process a huge amount of data, for example, when you perform synchronization or replication tasks. It will be very slow. In this case, it is better to use some SQL Server integration services.
Also, if you need to perform really complex queries, then the query API can stand in your way. QueryOver is great, but when you don't need to create alliances and complex subqueries. LINQ is not mature enough to solve all the SQL related stuff.
source share