I have been trying to reason about the best way to handle whether it is generally good practice to implement hashcode and equals on entities (I mean entity in the general se
There are times when you want Equals to compare all properties and times when you want Equals to be just the key. We've had a lot more success using helper classes that are explicit so there isn't ambiguity as to what's being compared.
ByKeyComparer.Equals...
ByPropertiesComparer.Equals...
or
Entity1.EqualsByKey...
Entity1.EqualsByProperties...