...
Why? Because your checkins are much clearer and it confuses because in most files this is the case
When? Nearly always
Except...you have a lot of really small classes with tight coupling to play some test scenario. Then it might be clearer to have them together.
Coding
Hibernate mappings next to your .cs files*
...