Réduite à la distinction essentielle, l'identité compte pour les entités, mais n'a pas d'importance pour les objets de valeur. Par exemple, le nom de quelqu'un est un objet de valeur. Une entité client peut être composée d'un nom de client (objet de valeur), d'une liste <Order> OrderHistory (liste d'entités) et peut-être d'une adresse par défaut (généralement un objet de valeur). L'entité client aurait un identifiant, et chaque commande aurait un identifiant, mais pas un nom; généralement, dans le modèle objet de toute façon, l'identité d'une adresse n'a probablement pas d'importance.
Les objets de valeur peuvent généralement être représentés comme des objets immuables; la modification d'une propriété d'un objet de valeur détruit essentiellement l'ancien objet et en crée un nouveau, car vous n'êtes pas aussi concerné par l'identité que par le contenu. Correctement, la méthode d'instance Equals sur Name renverrait "true" tant que les propriétés de l'objet sont identiques aux propriétés d'une autre instance.
Cependant, la modification d'un attribut d'une entité comme le client ne détruit pas le client; une entité client est généralement modifiable. L'identité reste la même (au moins une fois que l'objet a été conservé).
Vous créez probablement des objets de valeur sans vous en rendre compte; chaque fois que vous représentez un aspect d'une entité en créant une classe à granularité fine, vous avez un objet de valeur. Par exemple, une classe IPAddress, qui a certaines contraintes sur les valeurs valides mais est composée de types de données plus simples, serait un objet de valeur. Un EmailAddress peut être une chaîne ou un objet de valeur avec son propre ensemble de comportements.
Il est fort possible que même les éléments qui ont une identité dans votre base de données n'aient pas d'identité dans votre modèle d'objet. Mais le cas le plus simple est un composite de certains attributs qui ont du sens ensemble. Vous ne voulez probablement pas avoir Customer.FirstName, Customer.LastName, Customer.MiddleInitial et Customer.Title lorsque vous pouvez les composer ensemble en tant que Customer.Name; il y aura probablement plusieurs champs dans votre base de données au moment où vous pensez à la persistance, mais votre modèle d'objet s'en fiche.