Value objects do not have identity. ORM needs identity to update the database.
How to trick ORM?
(Marking Id for value object as internal won\'t work bec
As far as my understanding of DDD goes value objects are just a way to partition your entities. If a value object should be stored with an ID in the database it's not a value object.
Example:
The domain model looks like this (C#):
public class Customer : Entity
{
public Guid CustomerID { get; }
public string LastName { get; set; }
public Address HomeAddress { get; set; }
}
public class Address : ValueObject
{
public string Street { get; set; }
public string City { get; set; }
public string ZipCode { get; set; }
}
The corresponding database table would look something like this (Pseudo-SQL):
CREATE TABLE Customers
(
CustomerID,
LastName,
HomeAddress_Street,
HomeAddress_City,
HomeAddress_ZipCode,
)
To store the addresses in a seperate table you would make it an entity which has an ID.