Generic Repository Pattern with UnitOfWork and Nhibernate in C#