If you are considering the use of NHibernate, or are already using NHibernate, be sure that you always override the .Equals and .GetHashCode methods of your entities. NHibernate makes use of these methods extensively and you are likely to have strange issues if you don't override both of these correctly. Unfortunately, GetHashCode is one of those areas that is difficult to get right; but it needs to be done anyways.
For more information, see:
And one specific note on .Equals: be sure to check ReferencEquals as the last resort, if no other comparison is possible.
I've learned these lessons the hard way; hopefully you won't have to.
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.