Linq to SQL - Falha ao atualizar

Estou tendo alguns problemas com a atualização do linq para entidades sql. Por alguma razão, eu posso atualizar todos os campos do meuitem entidade alémnome.

Aqui estão dois testes simples que escrevi:

 [TestMethod]
        public void TestUpdateName( ) {
            using ( var context = new SimoneDataContext( ) ) {
                Item item = context.Items.First( );

                if ( item != null ) {
                    item.Name = "My New Name";
                    context.SubmitChanges( );
                }
            }
        }

        [TestMethod]
        public void TestUpdateMPN( ) {
            using ( var context = new SimoneDataContext( ) ) {
                Item item = context.Items.First( );

                if ( item != null ) {
                    item.MPN = "My New MPN";
                    context.SubmitChanges( );
                }
            }
        }

Infelizmente, TestUpdateName () falha com o seguinte erro:System.Data.SqlClient.SqlException: Incorrect syntax near the keyword 'WHERE'..

E aqui está o SQL gerado:

UPDATE [dbo]. [Itens] SET WHERE ([Id] = @ p0) AND ([CategoryId] = @ p1) AND ([MPN] = @ p2) AND ([Height] = @ p3) AND ([Width] = @ p4) AND ([Peso] = @ p5) AND ([Comprimento] = @ p6) AND ([AdministrativeCost] = @ p7) - @ p0: Entrada Int (Tamanho = 0; Prec = 0; Escala = 0 ) [1] - @ p1: Entrada Int (Tamanho = 0; Prec = 0; Escala = 0) [1] - @ p2: Entrada VarChar (Tamanho = 10; Prec = 0; Escala = 0) [Novo MPN] - @ p3: Decimal de entrada (tamanho = 0; Prec = 5; Escala = 3) [30.000] - @ p4: Decimal de entrada (tamanho = 0; Prec = 5; Escala = 3) [10.000] - @ p5: Decimal de entrada (tamanho = 0; Prec = 5; Escala = 3) [40.000] - @ p6: Decimal de entrada (tamanho = 0; Prec = 5; Escala = 3) [30.000] - @ p7: entrada Dinheiro (tamanho = 0; Prec = 19; Escala = 4) [350.0000] - Contexto: SqlProvider (Sql2008) Modelo: AttributedMetaModel Build: 3.5.30729.4926

Como você pode ver, nenhuma atualização está sendo gerada (SET está vazio ...) Não tenho idéia do por que isso está acontecendo.

E já adiantado ... SIM, a mesaItem tem um PK (Id).Obrigado antecipadamente!

Atualizar: Parece que o erro é causado pela substituição de GetHashcode (). Esta é minha implementação atual:

return string.Format( "{0}|{1}|{2}|{3}", Name, Id, UPC, AdministrativeCost).GetHashCode( );

questionAnswers(2)

yourAnswerToTheQuestion