Using the new DLR features in VB 10 and C# 4 you can build a configuration-free ORM that works well with legacy stored procedures. Though accessed using normal object-dot-property syntax, all the data objects are built at runtime based solely on the information returned by the database. And this is done with no interfaces to define, classes to implement, or data mapping definitions to write.
It is surprisingly easy to make a mistake when overriding the equality operator. Not only does the equality operator bring along with it a lot of baggage, there is a lot of flawed guidance out there, even on the MSDN website. So we are going to try to clear the air by presenting a systematic breakdown of both a reference type and a value type that supports equality.