在为订单建模时,在订单行中拥有产品属性是否有帮助,还是只需要产品名称?
命令:
public class Order
{
public Guid Id {get; set;}
public DateTime OrderDate {get; set;}
public Decimal Total {get;set;}
}
订单线:
public class Orderline
{
public Guid Id {get; set;}
public Order Order {get; set;}
public Product Product {get; set;}
public int Quantity {get; set;}
public Decimal Price {get; set;}
}
有了这个,如果我删除一个产品,它要么需要级联删除订单行和订单(这真的很糟糕),要么我在产品上soft delete
设置一个IsDeleted
标志。
当然,在域模型中存在关系可能会有所帮助;因此,我可以从订单中访问它的 Orderlines,然后进入每行的产品并访问产品的所有属性。但是由于 Orderline 具有价格属性,因此这种对产品的依赖似乎弊大于利。如果我更改 Orderline 使其只有产品的名称(在下面的类中,我已将类型从更改Product
为String
,那么我可以删除产品而不影响它的任何记录:
public class Orderline
{
public Guid Id {get; set;}
public Order Order {get; set;}
public string Product {get; set;}
public int Quantity {get; set;}
public Decimal Price {get; set;}
}