Arn*_*psa 13 identity domain-driven-design value-objects
值对象没有标识.ORM需要标识来更新数据库.
如何欺骗ORM?
(将值对象标记为内部将不起作用,因为ORM位于不同的程序集中并将其移动到同一程序集是不可接受的).
提前致谢.
就我个人而言,我在值对象中有 Id 字段 - 我将其视为值对象的另一个属性(例如名称、位置等)。
它可能不是真正的 DDD,但它对我有用。
就我对DDD的理解而言,值对象只是一种对实体进行分区的方法.如果值对象应该与数据库中的ID一起存储,那么它不是值对象.
例:
域模型看起来像这样(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; }
}
Run Code Online (Sandbox Code Playgroud)
相应的数据库表看起来像这样(Pseudo-SQL):
CREATE TABLE Customers
(
CustomerID,
LastName,
HomeAddress_Street,
HomeAddress_City,
HomeAddress_ZipCode,
)
Run Code Online (Sandbox Code Playgroud)
要将地址存储在单独的表中,您将使其成为具有ID的实体.