I started having some issues where Linq to SQL objects are "different” instances between calls to db.GetTable(type) and comparing objects returned. In the majority of my types, object equality was working just fine, but in a few types, the hash-codes for otherwise “equal” objects was different, while the remainder of the object data was as expected.
Deleted the designer-objects and re-added to my DBML and the issue is resolved.
A compare of my DBML file shows that the “IsPrimaryKey” attribute on my Identity columns was missing. I had probably added the table to the DBML and realized later that I hadn’t specified a primary key and later added said key, without re-synchronizing my DBML.