I\'m new to NHibernate (and ORMS) and trying to come to grips with the myriad of different options it presents. For reference, I\'m using Fluent NHibernate with seperate bus
Keep your loading/saving code separate from your DTOs. The DTO objects are only views of the underlying data.
When doing your queries, return the DTOs by using a transformation. Something like this:
resultSet = session.CreateCriteria(typeof(MyDataObject))
.Add(query criteria, etc.)
.SetResultTransformer(Transformers.AliasToBean())
.List()