Hi Roy,
there's a way how to get around this although it involves having
reference to your session...:
ProfileB b = session.Get<ProfileB>(
user.Profile.Id);
instead of doing your downcasting (which is not really OOP pure). It
should not ivolve a database hit since the profile should already be
loaded in the session first level cache.
Hope this helps,
Jarda