2017-06-20 6 views
0

J'ai une table commePourquoi ces binaires/RowVersion ne correspondent pas?

   Thingy 
======================================= 
| ... |  RowVersion  | ... | 
======================================= 

et un autre comme

   Result 
======================================= 
| ... |  ThingyRowVersion  | ... | 
======================================= 

Dans SQL Server les colonnes sont de type timestamp et en C#, ils sont de type Binary. Ce que je vois est un problème lorsque je tente de créer un résultat avec la même version de la ligne comme un bidule, comme

Result r = new Result() 
{ 
    ThingyRowVersion = (from t in Context.Thingies where t.Id == id select t.RowVersion).Single() 
} 
Context.InsertOnSubmit(r); 
Context.SubmitChanges(); 

les versions de ligne ne seront pas égaux juste après les modifications sont soumises.

Dans la terre C# ils semblent être égaux juste avant que je soumets, mais quand je soumets que je vois un décalage comme

0x0000000000002787/0x0000000000002782

Toute idée de ce qui se passe ici?

Répondre

1

Un horodatage est automatiquement mis à jour lorsqu'une ligne est insérée ou modifiée et n'est normalement pas manipulée par l'utilisateur. L'opération la plus courante avec eux consiste à utiliser comme vérification lors de l'utilisation de la concurrence optimiste pour voir si la ligne a été mise à jour depuis la dernière fois que vous l'avez lue. Vous voudrez peut-être utiliser quelque chose d'autre comme UniqueIdentifier pour faire ce que vous voulez.